0
VarChar列の文字列変数を使用してテーブルにレコードを追加しようとしています。私は次のインクリメントされたIDの下にそれを与える値を挿入したいと思います。しかし、私はコードを実行しようとすると、 "そのような列は存在しない"というSQLエラーが発生し続ける。エラーがどこに発生するのかについての詳細はないので、私はまったく詰まっています。レコードをテーブルに挿入するにはどうしたらいいですか?SQLiteを使ってUnityのテーブルにレコードを挿入するには?
ここに私のコードは、OOPに従っている場合、あなたが人生をシンプルになりますね
using UnityEngine;
using Mono.Data.Sqlite;
using System.Data;
using UnityEngine.UI;
using System.Collections;
public class AddQuery : MonoBehaviour {
public Text cipher;
public Text initialMessage;
public Text encryptedMessage;
private string _constr = "URI=file:previousMessages.db";
private IDbConnection _dbc;
private IDbCommand _dbcm;
private IDataReader _dbr;
public void AddSQL() {
string _cipher = cipher.text;
string _initialMessage = initialMessage.text;
string _encryptedMessage = encryptedMessage.text;
_dbc = new SqliteConnection(_constr);
_dbc.Open();
_dbcm = _dbc.CreateCommand();
_dbcm.CommandText = "CREATE TABLE IF NOT EXISTS previousMessages (ID INTEGER NOT NULL PRIMARY KEY , Cipher VARCHAR(5000) NOT NULL, InitialMessage VARCHAR(5000) NOT NULL,EncryptedMessage TEXT NOT NULL)";
_dbr = _dbcm.ExecuteReader();
_dbr.Close();
_dbcm.CommandText = "INSERT INTO previousMessages (Cipher, InitialMessage, EncryptedMessage) VALUES ("+_cipher+", "+_initialMessage+", "+_encryptedMessage+")";
_dbr = _dbcm.ExecuteReader();
_dbr.Close();
_dbcm.CommandText = "SELECT FROM previousMessages (Cipher, InitialMessage, EncryptedMessage) VALUES (" + _cipher + ", " + _initialMessage + ", " + _encryptedMessage + ")";
_dbr = _dbcm.ExecuteReader();
while (_dbr.Read())
{
Debug.Log("Cipher: " + _dbr["Cipher"] + "\t Initial: " + _dbr["InitialMessage"]);
}
}
}
ありがとうございました。私は時には私のコーディングでちょっと混乱することがあります。私はまだ文字列 "Ceaser"がテーブルに "このような列は存在しません"と表示されないことを明らかにしています。なぜこれが起こっているのか知っていますか? –
ポイントは、どの行でエラーが発生したかを伝えることでした。しかし、 'ExecuteCreateCommand()'と 'InsertCommand()'では '_dbcm.ExecuteReader()'の代わりに '_dbcm.ExecuteNonQuery()'を使う必要があります。確かに。 [ExecuteNonQuery docs](https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.executenonquery(v = vs.110).aspx)では、これを使用してデータベースオブジェクトを作成することができますテーブル* –