質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

Q&A

解決済

1回答

6276閲覧

C# SQLiteパラメータエラー

mi_test

総合スコア9

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

0グッド

0クリップ

投稿2020/08/19 09:04

編集2020/08/20 00:55

[環境]C# vs2019 SQLite
SQLiteを使用して以下のように抽出結果をDataSetで返すメソッドですが
次のようなエラーになります。
例外がスローされました: 'System.Data.SQLite.SQLiteException' (System.Data.SQLite.dll の中)
code = Unknown (-1), message = System.Data.SQLite.SQLiteException (0x80004005): unknown error
Insufficient parameters supplied to the command
パラメータが不十分となってしまいます。
落ちる箇所はadapter.Fill(dt)です。

コード public static DataTable GetLoginInfo(string TerUser, string TerPass) { string para = string.Empty; DataTable dt = new DataTable(); string StrSQL = "select * from test where data01 = @str01 and data02 = @str02" //8・20修正 using (SQLiteConnection conn = new SQLiteConnection("Data Source=" + @"c:\data\test.db")) { try { conn.Open(); using (SQLiteCommand cmd = conn.CreateCommand()) { cmd.CommandText = StrSQL; cmd.Parameters.Add(new SQLiteParameter("@str01", TerUser)); cmd.Parameters.Add(new SQLiteParameter("@str02", TerPass)); cmd.Prepare(); using (SQLiteDataAdapter adapter = new SQLiteDataAdapter(cmd)) { adapter.Fill(dt); } } } catch (Exception ex) { Console.WriteLine(ex); } } return dt; }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/08/19 09:36

select * from test where data01 = @str01 and data02 = str02 を select * from test where data01 = @str01 and data02 = @str02 にしたらどうなりますか?
mi_test

2020/08/19 09:41

返信ありがとうございます。質問用に編集したところで実際のSQLは@がついています。
退会済みユーザー

退会済みユーザー

2020/08/19 10:12

言ってることが分かりませんけど?
mi_test

2020/08/20 00:49

返信遅れました。 修正しましたが現状は変わりませんでした。
退会済みユーザー

退会済みユーザー

2020/08/20 00:51

質問を修正したのですか? その形跡は見られませんけど・・・
mi_test

2020/08/20 00:56

先ほどコードを修正しました。
guest

回答1

0

ベストアンサー

エラーメッセージ、

Insufficient parameters supplied to the command

でググってみると以下のような記事がヒットします。

SQLite error Insufficient parameters supplied to the command at Mono.Data.Sqlite.SqliteStatement.BindParameter
https://stackoverflow.com/questions/16271116/sqlite-error-insufficient-parameters-supplied-to-the-command-at-mono-data-sqlite

それは SQL 文で @Category というパラメータを指定していながら、Command にパラメータを追加するとき、

command.Parameters.Add(new SqliteParameter("@Cateogry", ""));

と言うようにパラメータ名のスペルを間違えたことが原因だったそうです。

質問のコメントで私が指摘した、

select * from test where data01 = @str01 and data02 = str02

select * from test where data01 = @str01 and data02 = @str02
にしたらどうなりますか?

は「//8・20修正」で直して上記のような問題はなくなったように見えますが、質問者さんの 2020/08/19 18:41 のコメントを見ると、質問欄のコードは、

質問用に編集した

ということなので、質問欄に書いてあるコードと実際に問題を起こしているコードとは違っていて、実は問題を起こしているコードではスペルミスとかパラメータの設定不足が直ってないのでは?

投稿2020/08/20 01:10

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mi_test

2020/08/20 06:45

返信ありがとうございます。 ご指摘の通り、スペルミスでした(本番のコードの@xxxのところ) しかし抽出がされないエラーになりまりましたが違う原因と思いますので この質問はクローズします。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問