現在UnityでSQLiteを使用し、SQLiteにデータを格納しようとしているのですが、現在データを追加するのに苦戦しております。
string title;
if()
title="a";
else if()
title="b";
・
・
・
string query = "insert into user values(1, ここに変数titleを使用したい)";
という文のようにデータの追加で変数を使用したいと考えております。
知識が無い上、拙い文章で申し訳ございませんが、
どなたか変数を使用してデータを追加する際のプログラムの書き方についてお力添えしていただけると幸いです。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答1件
0
ベストアンサー
(追記2)SqliteException: no such column:
使用プラグインは「SQLiteUnityKit」です。
教えていただいたページを参考に修正し、「string cloud = "変数テスト";」として実行した場合も同様に以下のエラーが発生してしまいました。
SqliteException: no such column: 変数テスト SqliteDatabase.Prepare (System.String query) (at Assets/Script/SqliteDatabase.cs:302) SqliteDatabase.ExecuteNonQuery (System.String query) (at Assets/Script/SqliteDatabase.cs:183) textdb.Start () (at Assets/textdb.cs:13)
解決方法
そんなカラム無いよってエラーなので文字列をカラムとして認識しているようです。
文字列として認識するようにシングルコーテーションで囲んでみてください。
C#
1string cloud = "変数テスト"; 2string query = "insert into weather values( 1, '" + cloud + "')";
それでダメならダブルコーテーションで囲んでみてください。
C#
1string cloud = "変数テスト"; 2string query = "insert into weather values( 1, \"" + cloud + "\")";
(追記3)おまけ SQLをログインで使う場合
ログインで利用する場合は**「SQLインジェクション攻撃」**の対策もしていた方が良いので検討してみてください。
たとえばWeb上だと型と字数を制限して、ユーザーから受け取った文字列はエスケープして使うように実装したりします。
SQLインジェクション攻撃とは?
https://blogs.mcafee.jp/sql-injection-prevention
UnityでSQLite!SQLiteUnityKitに潜む4つの問題点と対応方法
https://fantastic-works.com/archives/406#SQL
(追記1)マルチバイト文字列が扱えない
試しに1度コメントに書いていただいたテストスクリプトの「string cloud = " 変数が入っているか ";」を日本語ではなく半角英語にしてみてください。もしそれでエラーが出ない場合、マルチバイト文字列を扱えない可能性があります。
下記記事にしたがって修正してみてください。
https://fantastic-works.com/archives/406
過去回答
"insert into user values(1," + title + ")"
で良いと思います。
頻繁にGCが発生するようでしたらStringBuilderを使うと良いと思います。
[オマケ]
個人的にはUnityでSQL系を使いません。
理由は、重い、引数で渡す文字列が間違えても分かりづらい、型が間違えても分かりづらい、アップデートの時に問題になる場合がある。といった感じです。
おすすめはMessagePack-CSharpです。
クラスをそのまま保存できますし、SQLのデメリットをすべて解決してくれます。
ただデータの絞り込みはできませんがLINQを使うといいと思います。
投稿2019/02/15 11:28
編集2019/02/20 09:09総合スコア1724
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/02/18 08:59 編集
2019/02/18 14:50
2019/02/19 07:23
2019/02/19 13:06
2019/02/20 06:02
2019/02/20 08:56 編集
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。