VB2005でDelete文(SQL Server2005 Express)を使ったプログラムの問題

このQ&Aのポイント
  • VB2005でDelete文を使ったプログラムを書きたいが、SQL Server2005 Express Editionを使用している。テーブル(WK_BoxList)から列名(ComputerName)=XXXに該当するレコードを削除するが、3の時に列名'SYSTEM'が無効というエラーメッセージが表示される。テーブル(WK_BoxList)には列名'SYSTEM'というのは存在しない。プログラム初心者であり、アドバイスを求めている。
  • VB2005でDelete文を使ったプログラムを書きたいが、SQL Server2005 Express Editionを使用している。テーブル(WK_BoxList)から列名(ComputerName)=XXXに該当するレコードを削除するが、1,2のSQL文では問題が発生する。プログラム初心者であり、アドバイスを求めている。
  • VB2005でDelete文を使ったプログラムを書きたいが、SQL Server2005 Express Editionを使用している。テーブル(WK_BoxList)から列名(ComputerName)=XXXに該当するレコードを削除するが、3の時に列名'SYSTEM'が無効というエラーメッセージが表示される。プログラム初心者であり、アドバイスを求めている。
回答を見る
  • ベストアンサー

VB2005で、Delete文(SQL Server2005 Express)

VB2005で、Delete文を使ったプログラムを書きたいのですが。 SQL Server2005 ExpressEditonを使っています。 テーブル(WK_BoxList)から 列名(ComputerName)=XXXに該当するレコードを削除する。 そこで下記のコードを書いたのですが、 1,2のSQL文だと問題ようなのですが。 3の時に、列名'SYSTEM'が無効です。とメッセージがでてしまいます。 テーブル(WK_BoxList)には列名'SYSTEM'というのはありません。 3のようにSQL文は、文字連結させて使えたはずだと思ったのですが。 ちなみにプログラム初心者です。アドバイスをいただきたいのですが、 よろしくお願い致します。<(_ _)> Dim scn As SqlClient.SqlConnection = New SqlClient.SqlConnection(接続文字列) Dim scm As SqlClient.SqlCommand Dim sql As String Dim PcName As String = My.Computer.Name Try scn.Open() ' OK 'sql = "delete from WK_BoxList ' OK '------------1 ' OK 'sql = "delete from WK_BoxList Where ComputerName=1 '-------------- 2 ' NG sql = "delete from WK_BoxList Where ComputerName=" & PcName '----------3 scm = New SqlClient.SqlCommand(sql, scn) scm.ExecuteNonQuery() Catch ex As Exception MessageBox.Show(ex.Message) End Try scn.Close() 環境 WindowsXP Pro SP2 VS2005Pro Sp1 SQL Server2005 ExpressEditon

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

コーディング上、SQL文の末尾の”(ダブルクォーテーション)がところどころ無い気がします。 SQL文は以下の3つでいいのですかね。 1.delete from WK_BoxList 2.delete from WK_BoxList Where ComputerName=1 3.delete from WK_BoxList Where ComputerName=任意 SQL Server2005 ExpressEditon のクエリでそれぞれのSQL文を流してみましたか? その時に流して上手くいったSQL文と今回コーディングした結果のSQL文で違いはありませんか? 確認すること ■列名【ComputerName】の型 VerCharだった場合は文字列なので’(シングルクォーテーション)で囲む必要があります。 ■変数【PcName】の値 実際にデバッグモードで PcName にどのようなデータが入ってきているか確認して下さい。

ktksystem
質問者

お礼

>> VerCharだった場合は文字列なので’(シングルクォーテーション)で囲む必要があります。 ご指摘通りでした。シングルクォーテーションが必要でした。 ありがとうございました。

関連するQ&A

  • sql2000 vb2008接続

    VB2008/standard editionでremote PC/dynabook1のMSDE/sql2000 のnCalnartに接続を試みるとき error/providerはサポートされていません/がでます。 デザイン時には接続されるのですが 原因と対策をお教えください Dim scn As SqlClient.SqlConnection = New SqlClient.SqlConnection scn.ConnectionString = "Provider=SQLOLEDB;Data Source=DYNABOOK1;Persist Security Info=True;User ID=sa;Initial Catalog=nCalnart" Try scn.Open() MessageBox.Show("接続しました") scn.Close() MessageBox.Show("切断しました") Catch ex As Exception MessageBox.Show(ex.Message, "error") End Try

  • エラーを発生させたい(SQLサーバーへの接続)

    ネットのサンプルコードでSQLサーバーの接続テストをしましたが、 存在しないSQL文でもエラーになりません。(vb2005です) Sub sqlサーバーへ接続() ' 接続文字列を生成する Dim Cn As New System.Data.SqlClient.SqlConnection Dim SQL As System.Data.SqlClient.SqlCommand Dim stConnectionString As String = String.Empty stConnectionString &= "Data Source = ××××\SQLEXPRESS;" stConnectionString &= "Initial Catalog = ×××;" stConnectionString &= "Integrated Security = SSPI;" ' SqlConnection の新しいインスタンスを生成する (接続文字列を指定) Dim cSqlConnection As New System.Data.SqlClient.SqlConnection(stConnectionString) ' データベース接続を開く cSqlConnection.Open() SQL = Cn.CreateCommand SQL.CommandText = "SELECT テーブル1.あああフィールド1 FROM テーブル1" '間違ってても進んでしまう。 ' 接続に成功した旨を表示する MessageBox.Show("Microsoft SQL Server に接続されました") ' データベース接続を閉じる (正しくは オブジェクトの破棄を保証する を参照) cSqlConnection.Close() cSqlConnection.Dispose() End Sub 「あああフィールド1」なんて存在しないのに、先に進んでしまいます。 エラー処理の仕方を教えてください。 よろしくお願いします。

  • VB.NETでSqlClientを利用して複数テーベルを見る方法

    今VB.NETで SQLデータベースからデータを取得して動作するプログラムを作っているのですが、テーブルを複数参照する方法がわかりません。教えてください~ ■今のプログラム(おおざっぱに) Public DBcn As SqlClient.SqlConnection = Nothing Public SQLcmd As SqlClient.SqlCommand Dim dr As SqlDataReader DBcn = New SqlClient.SqlConnection SQLcmd = New SqlClient.SqlCommand DBcn.ConnectionString = "接続情報省略" DBcn.Open() SQLcmd.Connection = DBcn SQLcmd.CommandText = "select * from AAA " dr = SQLcmd.ExecuteReader() While dr.Read() = True   ※処理A End While このプログラムの処理Aの中に もう一度Select文で他のテーブル(データベース同じ)を参照したいのですが、どのようにすればよいのでしょうか? いろいろ試してみたのですがどれもできず;;困っております。

  • エクセルからSQLの接続の仕方

    エクセルを使ってMSSQLに接続したいのですが、エラーがでて接続できません。 なぜでしょうか? [エラー内容] コンパイルエラー: ユーザー定義型は定義されれいません。 コードの下の部分で発生します。 Dim Cn As New System.Data.SqlClient.SqlConnection [コード] Private Sub CommandButton1_Click() Dim St As String Dim Cn As New System.Data.SqlClient.SqlConnection Dim SQL As System.Data.SqlClient.SqlCommand Dim ServerName As String Dim UserID As String Dim Password As String Dim DatabaseName As String ServerName = "TEST-PC" 'サーバー名(またはIPアドレス) UserID = "sa" 'ユーザーID Password = "password" 'パスワード DatabaseName = "TEST_DB_20140801" 'データベース St = "Server=" & ServerName & ";" & "User ID=" & UserID & ";" & "Password=" & Password & ";" & "Initial Catalog=" & DatabaseName Cn.ConnectionString = St SQL = Cn.CreateCommand SQL.CommandText = "SELECT * FROM LOG_DATA_XLINE" Cn.Open MsgBox (SQL.ExecuteScalar) Cn.Close SQL.Dispose Cn.Dispose End Sub

  • VB.NETからのMDBへのデータ接続について教えてください。

    またまたお世話になります。 いろいろ教えていただきながらほとんど出来上がって今最後のログオン部分を作成中です。 VB.NET2003、アクセス2000使用です。 参考にしている本がAccess使いではなくMSDEを使用しているため、データ接続の部分が毎回違っています。 各フォームなどでは余り気にせずに進めたのですが、このログオン処理のところだけ引っかかって進むことが出来ません。 データリンクプロパティでAccessの場合はMicrosoft Jet4.0 OLE DB Providerを指定しなければならないようですが、この場合、Oledbconnectionが作成されます。 MSDEの場合、Sqlconnectionが作成されSQLは以下のように書かれます。 Dim cmd As Sqlclient.Sqlcommand = Sqlconnection1.CreateCommnad() Dim dr As SqlClient.SqlDataReader 'コマンドのコネクション設定 cmd.Connection = SqlConnection1 'コネクションを開く SqlConnection1.Open() OledbConnectionを使って書くにはどういう修正をしたらいいのか、ご教示いただきたくお願いします。

  • VBExpressからSQLサーバーへの接続

    VBExpress2010をDLしSQLServercompactをいじろうと思ったのですが、接続がそもそも出来ず詰まってしまいました。 適当にフォームを作ってボタンを配置し、 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim St As String Dim Cn As New System.Data.SqlClient.SqlConnection Dim SQL As System.Data.SqlClient.SqlCommand Dim ServerName As String = "C:\Program Files\Microsoft SQL Server Compact Edition\v3.5\Samples\Northwind.sdf"     Dim DatabaseName As String = "Northwind" 'データベース St = "Server=""C:\Program Files\Microsoft SQL Server Compact Edition\v3.5\Samples\Northwind.sdf"";" St &= "integrated security=SSPI;" St &= "initial catalog = Northwind" Cn.ConnectionString = St SQL = Cn.CreateCommand SQL.CommandText = "SELECT FirstName FROM Employees" Cn.Open() MsgBox(SQL.ExecuteScalar) Cn.Close() SQL.Dispose() Cn.Dispose() End Sub としました。結構単純な流れだと思うのですがCn.Open()の部分で「sqlexpressionはハンドルされませんでした」とエラーが出ます。 SQL Network Interfaces, error: 26 だそうです。資格情報の有無もなにもデータベースエクスプローラで内部の閲覧は出来るし、パスワードフリーなのでどのセッションが不可なのか見当がつきません。アドバイスよろしくお願い致します。

  • ASP.NETでSQL-SERVERへの接続方法

    最近、ASP.NETの勉強をはじめました。テキストを見ながらサンプルプログラムを作成しているのですが、SQL-SERVERへのDB接続方法がうまくいきません。 Dim conn As String = "data source=????;user id=sa;password=;initial catalog=SampleDb" Try   Dim objConn As New SqlClient.SqlConnection   objConn.ConnectionString() = conn   Dim comm As New SqlClient.SqlCommand(sql, objConn)   objConn.Open() ソース一番上の????の部分に何と記述すればいいかわかりません。テキストには localhost と記述されています。コンパネの「ODBCデータソース」のDSNやサーバ名を記述しても無理でした。 ASP開発で使用していたDB接続 Conn = "PROVIDER=SQLOLEDB;SERVER=サーバ名;DATABASE=YUSODB;UID=sa;PWD=;" を試したりしたのですが、無理でした。 どなたかご教授お願いします。

  • 複数SQL発行について

    お世話になります。 VB.NET2003とSQLServer2005にて開発を行っております。 Aテーブルからデータを取得してその取得データを元にBテーブルを参照する。 と、言うのがあるのですが、 Bテーブル参照時に「この接続に関連付けられている DataReader が既に開いています。この DataReader を最初に閉じる必要があります。」の エラーとなってしまいます。 複数SQLを発行する場合、再度接続を行わなければならないのでしょうか? 同一接続内で複数のSQLを発行することは出来ないのでしょうか? どなたかご存知でしたらお教え願います。 以下、ソース ' 変数宣言 Dim objDBConnect As SqlConnection Dim objDBTran As SqlTransaction Dim objSqlCmd As SqlCommand Dim objSqlDRA As SqlDataReader Dim objSqlDRB As SqlDataReader ' データベース接続 objDBConnect = New SqlConnection("接続文字列") objDBConnect.Open() ' トランザクション開始 objDBTran = objDBConnect.BeginTransaction(IsolationLevel.ReadCommitted) ' SQL発行 objSqlCmd = New SqlCommand("SELECT * FROM A_TABLE", objDBConnect) objSqlDRA = objSqlCmd.ExecuteReader() While objSqlDRA.Read() objSqlCmd = New SqlCommand("SELECT * FROM B_TABLE", objDBConnect) objSqlDRB = objSqlCmd.ExecuteReader() ←ここで、エラーとなってしまいます。 End While

  • SQLのデータの一部分を切り取って表示するには?

    visual basicでSQLのデータを表示する際に、そのデータの左二文字だけ切り取ってdatagridviewに表示したいのですが、やり方がわかりません。 単にselect文でdatagridviewに表示するのはできたのですが。 切り取りには(Strings.Right(A, Len(A) - 6))とこの構文を使えばいいのでしょうか? ちなみにdatagridviewは3列あって、そのうちの1列目だけをそうしたいと思います。 普通に表示した場合のコードは以下のようです。     Dim sConn As SqlClient.SqlConnection Dim sda As SqlClient.SqlDataAdapter Dim ds As New DataSet sConn = New SqlConnection () 'SQLへの接続文字列     sda = New SqlDataAdapter("SELECT * FROM         kakeibo",sConn) 'kakeiboから呼び出す条件 sda.Fill(ds) '呼び出す datagridview1.DataSource = ds.Tables(0) '表示

  • VB.NetでSQLServer2005に接続できません。教えてください。

    はじめまして。初めて投稿します。 かなり困っているので、誰か助けてください。 内容はVB.Net2003を使用して、SQLServer2005に接続するときに 「SSPI コンテキストを生成できません」のエラーが発生してしまいます。 SQLServer2005をインストールしているのがサーバーではなく クライアント(プログラムを実行している端末)なので、 それが原因だと思うのですが、どうしてもその環境でしなくてはいけないので 何かご存知の方がおられるのなら、ご教示お願いします。 ソースは以下のとおりです。 ↓ Dim Scn As SqlClient.SqlConnection = New SqlClient.SqlConnection '接続文字列セット Scn.ConnectionString = _ "Server=""(local)"";Integrated Security=SSPI;database=" & データベース名 'dbオープン Scn.Open() ←このタイミングでエラーが発生

専門家に質問してみよう