- - PR -
odbc接続について
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-10-08 21:47
こんばんは。
はじめまして。 まゆみです。 asp.net2.0(言語vb)で開発を行っています。 以前までsql2000サーバでSqlConnectionを使用して接続を行っていました。 Dim aaaStr As String = Nothing Dim aaaDb As SqlConnection = Nothing Dim aaaCom As SqlCommand = Nothing Dim aaaDr As SqlDataReader = Nothing aaaChkStr = ConfigurationManager.ConnectionStrings("DBConect").ToString aaanChkDb = New SqlConnection(WEBLoginChkStr) aaaCom = New SqlCommand _ ("SELECT a,b,d,e,f FROM " & _ ConfigurationManager.AppSettings("aaaDB") & " .." & _ ConfigurationManager.AppSettings("aaaTable") & "WHERE aaa=@aaa and " & _ "bbb like @bbb", aaaDb) aaaCom.Parameters.AddWithValue("@aaa", 123) aaaCom.Parameters.AddWithValue("@bbb", 456) aaaDb.Open() 〜省略〜 aaaDb.close() しかし、odbcで接続しなくてはいけなくなり以下の様に記載して行いました。 Dim aaaStr As String = Nothing Dim aaaDb As OdbcConnection = Nothing Dim aaaCom As OdbcCommand = Nothing Dim aaaDr As OdbcDataReader = Nothing aaaChkStr = ConfigurationManager.ConnectionStrings("DBConect").ToString aaanChkDb = New OdbcConnection(WEBLoginChkStr) aaaCom = New OdbcCommand _ ("SELECT a,b,d,e,f FROM " & _ ConfigurationManager.AppSettings("aaaDB") & " .." & _ ConfigurationManager.AppSettings("aaaTable") & "WHERE aaa=@aaa and " & _ "bbb like @bbb", aaaDb) aaaCom.Parameters.AddWithValue("@aaa", 123) aaaCom.Parameters.AddWithValue("@bbb", 456) aaaDb.Open() 〜省略〜 aaaDb.close() しかし「ERROR [42000] [Microsoft][ODBC SQL Server Driver][SQL Server]変数 '@aaa' を宣言する必要があります。」 とエラーがでてしまいます。 Parameters.AddWithValueで宣言していると思いますがOdbcで行うとSqlConnectionで行うようにParameters.AddWithValueの 宣言が可能はないのでしょうか? 何卒アドバイスの程を宜しくお願いします。 | ||||||||
|
投稿日時: 2006-10-08 22:02
問題の本質は、こちらではないかもしれませんよ。
'@パラメータ名' ではなく '?' を使用してもダメでしょうか。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-10-08 23:04
じゃんぬねっと様
まゆみです。 こんばんは。 お早いご返事本当ありがとうございます。 アドバイス頂いた様に下記の様に行ってみました。 aaaCom = New OdbcCommand _ ("SELECT a,b,d,e,f FROM " & _ ConfigurationManager.AppSettings("aaaDB") & " .." & _ ConfigurationManager.AppSettings("aaaTable") & "WHERE aaa=? and " & _ "bbb like @bbb", aaaDb) aaaCom.Parameters.AddWithValue("@aaa", 123) aaaCom.Parameters.AddWithValue("@bbb", 456) そしたら今度は同じ様に「ERROR [42000] [Microsoft][ODBC SQL Server Driver][SQL Server]変数 '@bbb' を宣言する必要があります。」 とでたので @bbbを?にしてみました。 そしたらエラーはでなくなりました。 でもちょっと疑問です。@aaa、@bbbを?にしてなぜ@aaaだった部分が「aaaCom.Parameters.AddWithValue("@aaa", 123)」 で「@bbb」だった部分が「aaaCom.Parameters.AddWithValue("@bbb", 456)」と認識できているのでしょうか? 順番にParameters.AddWithValueを定義すればいいのでしょうか? | ||||||||
|
投稿日時: 2006-10-08 23:22
http://msdn2.microsoft.com/ja-jp/library/system.data.odbc.odbccommand.parameters.aspx
>コマンド テキストのパラメータの疑問符プレースホルダの位置と、OdbcParameter オブジェクトを OdbcParameterCollection に追加する順序とを、正しく対応させる必要があります。 パラメータの数と順番が合ってれば正しく認識されるということで。 (OldDbCommandもこれと同様。SqlCommandとOralceCommandはパラメータ名での一致が必須) |
1