昨日に引き続き、VisualStudio Community2017のVBネタです。
ちなみに昨日もいろいろとよくわからない問題に当たってます。
www.sonnagaya.com
写真は本文とは全く関係ありませんwwww
今回接続するデータベースはACCESS2013です。
INSERTのSQLを通常の書式で書(OleDbParameterを使用する場合)くと、例えばですが、下のようになります。
insert into uUser (userid, password) values (@userid, @password)
このままの文字列で実行すると
「INSERT INTO ステートメントの構文エラーです。」
がでますw
昨日はそれで括弧をつけてOKだったのですが、それと同じようにしてみます。
insert into uUser ([userid], [password]) values (@userid, @password)
が。。。。今日は違うSQL(上のSQL文)でこのカッコ付き書式で実行してみます。
「INSERT INTO ステートメントの構文エラーです。」
相変わらずこのエラーが出ます。。。もうよくわかりませんね。アクセスは方言強すぎです。
ためしにMYSQLなどで作ったときに出てくるようにフィールド文字の括弧などを変えてみます。
"insert into `uUser` (`userid`, `password`) values (@userid, @password)"
これだとINSERTできました。しかしほかのINSERT文ではでも問題ないSQLがあります。
違いはでOKだった文はユニークキーがオートナンバーというくらいしかありません。
うーん。。。これはどういうことなんでしょうね。
なんかこれってもうロジック云々のもっと手前の部分ですよねwww
もう一件類似ですが、
「UPDATE ステートメントの構文エラーです。」
も出ました。
そしてなぜかUPDATE件数が0件となる事件も。。。。。。
これもよくわからないのですが、
Dim command As New OleDb.OleDbCommand(sql,odConnection)
として、
command.Parameters.Add(param)
とするのですが、このパラメータをAddする順番が登場するSQLのパラメータ順通りになってないと駄目なようです。
何だこれ。。。。。。これはOleDbParameter(”@userid”,olyType.VarChar)と指定しているので順番は全く関係ない気がするのですが。。。
結局順番を入れ替えると上手くいきました。。。
とにかく謎が多いです。
そしてこの日も何回かPCがお亡くなりになりました。。。
バーコードリーダーか?いやソース書いてる途中に落ちるんだからやはりVisualStudio Community2017の仕業だと思うが。。。
原因はわかりません。