前提・実現したいこと
VBでSQLiteをもちいたデータベースの作成を行っています。
2列の表を作成し、SQLで2列目に存在する特定の文字(文字列)の登録数を取得したいです。
ここで、SQLiteCommandを用いて、1列目から特定文字の登録数を取得することはできるのですが、
なぜか2列目のカラムを指定するとできません。。。いったいなぜでしょうか?
SQLiteを初めて使用するので作法もわからず、いろいろ検索しましても解答を見つけられませんでした。
どなたかご教示願えませんでしょうか。
宜しくお願い致します。
該当のソースコード
vb
1以下が作成した表です。 2"CREATE TABLE Sample (QUESTION NVARCHAR(10),ANSWER NVARCHAR(10))" 3 4以下データ取得ができたコードです 5Dim aaa As New SQLiteCommand("SELECT count(*) FROM Sample WHERE QUESTION='AAA'", con) 6 7以下データ取得ができなかったコードです 8Dim aaa As New SQLiteCommand("SELECT count(*) FROM Sample WHERE ANSWER ='AAA'", con) 9 10追加点 11データベースの中身ですが、画像クイズアプリをVBフォームで開発していまして、 12その問題と回答を表に収めていくものです。問題は文ではなく画像で、 13プログラム内部で画像に対する正解名を持っています。回答は毎回同じ5択の選択肢となっています。 14ここで回答ボタンを押すたびにSQLのInsert文が発行され、問題の画像名と回答が2列表に追加されます。 15ここから回答列の特定の名称のみの回答数を取得したいと考えています。 16以下表のイメージです。 17QUESTION ANSWER 18-------- ------- 19AAA BBB 20CCC DDD 21AAA AAA 22DDD DDD 23BBB AAA 24 25例えばAAAと回答した回数を取得したいのと、最終的に、問題AAAに対してAAAやBBBやCCCなど、 26回答のばらつきを見たいと思っています。 27SQL文は、"SELECT count(*) FROM Sample WHERE QUESTION='BBB' AND ANSWER='AAA' 28こちらを本来は実行したかったのですが、どうもANSWER列(2列目)が認識されていないのかなと。。。 29以下、データ登録コードです。 30ここで使われる変数questとmyansが表に収まる文字列でして、フォーム上のオブジェクトの 31textプロパティが格納されています。 32"ダミーデータ登録(テーブルへINSERT)" 33 Private Sub InsertData() 34 'データベースを操作する 35 Using con As New SQLiteConnection("Data Source=" & DATABASE_NAME) 36 'データベースへアクセスする 37 con.Open() 38 39 '生成したラベル名称をテーブルへINSERT 40 Using cmd As SQLiteCommand = con.CreateCommand() 41 cmd.CommandText = "INSERT INTO Sample (QUESTION,ANSWER) VALUES('" & quest & "', '" & myans & " ')" 42 cmd.ExecuteNonQuery() 43 End Using 44 End Using 45 End Sub 46 47以下、データ取得コードです() 48"登録されているデータを取得" 49 Private Function GetData() 50 'データベースを操作する 51 Using con As New SQLiteConnection("Data Source=" & DATABASE_NAME) 52 'データベースへアクセスする 53 con.Open() 54 '登録されているデータ数を取得 55 Dim aaa As New SQLiteCommand("SELECT count(*) FROM Sample WHERE QUESTION='AAA' AND ANSWER='AAA'", con) 56 57<<<以下1行再追加です>>> 58Label1.Text = CStr(aaa.ExecuteScalar()) 59このラベル1に取得した値を表示させて確認をしようとしましたが、これが0のまま変わらずできなくてご相談した次第です。 60 61 62 63 End Using 64 End Function 65
試したこと
ひとまずデータベースの作成時、1列目と2列目を入れ替えてみました。
"CREATE TABLE Sample (ANSWER NVARCHAR(10),QUESTION NVARCHAR(10))"
すると
"SELECT count() FROM Sample WHERE ANSWER='AAA'"・・・これはOKとなりました。
"SELECT count() FROM Sample WHERE QUESTION='AAA'"・・・これはだめ
どうも2列目の取得に問題があるような気がします。。。
また、上のSQL文は両方phpmyadminで実行できましたので、やはりSQLiteの使い方なのかなと思っています。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー