VarChar sütunları için dize değişkenleri kullanarak tabloma kayıt eklemeye çalışıyorum. Bir sonraki artırılmış ID altında verdiğim değerleri eklemek istiyorum. Ancak, kodu çalıştırmayı denediğimde "böyle bir sütun yok" SQL hatasını almaya devam ediyorum. Hatanın meydana geldiği yerde bir ayrıntı yok, bu yüzden sıkışıp kaldım. Peki kayıtları bir tabloya nasıl ekleyebilirim?SQLite kullanarak Unity'de bir tabloya kayıtlar nasıl eklenir?
Burada OOP izlerseniz hayat basit olacaktır olman benim kod
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"]);
}
}
}
Yardımlarınız için teşekkürler; Kodlarımla bazen biraz dağınık olabilirim. Görünüşe göre "Ceaser" dizesi, "böyle bir sütun bulunmuyor" şeklinde tabloya gidemediğim hatayı almaya devam ediyorum. Bunun neden olduğunu biliyor musun? –
Buradaki nokta, hangi hattın size bir hata verdiğini bildirmek oldu. Ama ben, 'ExecuteCreateCommand() 've' InsertCommand() '' '_dbcm.ExecuteNonQuery()' '' _dbcm.ExecuteReader() 'yerine kullanmanız gerektiğini varsayalım. Yine de emin değilim. [ExecuteNonQuery docs] (https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.executenonquery (v = vs.110) .aspx) bunu veritabanı nesneleri oluştururken kullanabilirsiniz. tablolar gibi * –