異邦人になってみた~~上海生活写真ブログ

中国上海市在住です。もう10年を超えました。休日は星空(天の川)撮影やポートレート撮影等、連休時はカメラを持って中国各地を旅行してます。最近は内モンゴル自治区によく行っています。

 このブログについて(about)
  中国旅行/観光/写真記事一覧(省別)

VBからMDBのインサートで「INSERT INTO ステートメントの構文エラーです。」が出る件


昨日に引き続き、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の仕業だと思うが。。。
原因はわかりません。