Windows Phone 中的 SQLite 客户端不一致错误

本文关键字:不一致 错误 客户端 SQLite Phone 中的 Windows | 更新日期: 2023-09-27 18:32:27

我试图将数据插入数据库,但是当我选择插入的内容时,我得到的数据不一致。

比如,我插入 a="data1", b="data2", c="data3"

但是当我选择时,我得到 a="0", b="data2", c="data3"

为什么我使用相同的方法,但其中一些获得不同的价值..

我的实现参考:SQLiteClient for WP(我测试了他的代码,它运行正确,我完全遵循他的做法,但后来我得到了不同的结果。

插入功能:

String t_title = txtTitle.Text;
String t_img = "test";
String t_answer_a = txtAnswer1.Text;
String t_answer_b = txtAnswer2.Text;
String t_answer_c = txtAnswer3.Text;
String t_answer_d = txtAnswer4.Text;
String t_answer = txtAnswer1.Text;
int t_cat = 1;
int rec;
Random rnd = new Random();
string strInsert = " INSERT INTO tlg_question (q_title,q_img,q_ques_a,q_ques_b,q_ques_c,q_ques_d,q_ans,q_cat) VALUES (@q_title,@q_img,@q_ques_a,@q_ques_b,@q_ques_c,@q_ques_d,@q_ans,@q_cat)";
tlg_question tst = new tlg_question
{
    q_title = t_title,
    q_img = t_img,
    q_ques_a = t_answer_a,
    q_ques_b = t_answer_b,
    q_ques_c = t_answer_c,
    q_ques_d = t_answer_d,
    q_ans = t_answer,
    q_cat = t_cat
};
rec = (Application.Current as App).db.Insert<tlg_question>(tst, strInsert);

选择功能:

ObservableCollection<tlg_question> _tlg_questionEntries = null;
string strSelect = "SELECT q_id,q_title,q_img,q_ques_a,q_ques_b,q_ques_c,q_ques_d,q_ans,q_cat FROM tlg_question ORDER BY q_id DESC LIMIT 0,1";
_tlg_questionEntries = (Application.Current as App).db.SelectObservableCollection<tlg_question>(strSelect);
foreach (tlg_question data in _tlg_questionEntries)
{
    qid = data.q_id;
    txtTitle.Text += data.q_title;
    img = data.q_img;
    txtAnswer1.Text += data.q_ques_a;
    txtAnswer2.Text += data.q_ques_b;
    txtAnswer3.Text += data.q_ques_c;
    txtAnswer4.Text += data.q_ques_d;
}

还有我的更新功能:

String t_title = txtTitle.Text;
String t_answer_a = txtAnswer1.Text;
String t_answer_b = txtAnswer2.Text;
String t_answer_c = txtAnswer3.Text;
String t_answer_d = txtAnswer4.Text;
int rec;
Random rnd = new Random();
string strUpdate = " UPDATE tlg_question SET q_title=@q_title,q_ques_a=@q_ques_a,q_ques_b=@q_ques_b,q_ques_c=@q_ques_c,q_ques_d=@q_ques_d,q_ans=@q_ans WHERE q_id=@q_id";
tlg_question tst = new tlg_question
{
    q_id = qid,
    q_title = t_title,
    q_ques_a = t_answer_a,
    q_ques_b = t_answer_b,
    q_ques_c = t_answer_c,
    q_ques_d = t_answer_d,
    q_ans = t_answer_a
};
rec = (Application.Current as App).db.Update<tlg_question>(tst, strUpdate);

感谢任何可以帮助我的人!!

*或者如果你认为我应该放弃SQLite而去其他数据库,请告诉我,我首先选择SQLite,因为它处理简单的查询,如mysql和FF SQLite管理器。

谢谢!

Windows Phone 中的 SQLite 客户端不一致错误

好的,我已经测试过了,终于发现,我需要一次插入或更新所有列,然后只有我才能正确完成工作,我不确定这是由于 DBHelper 限制或来自 SQLiteClient。

更多详情:

例如,如果我的预设数据库声明了 4 列,如下所示:

[q_id, q_title, q_ques, q_ans] (q_id as Auto Increment)

那么当我执行 INSERT 或 UPDATE 时,即使我只需要插入q_title(同时保留q_ques并使用默认值q_ans),我也需要在操作中包含所有列的参数:

INSERT INTO tlg_question (q_title,q_ques,q_ans) VALUES (@q_title,@q_ques,@q_ans)";

不像我通常在PHP MYSQL中所做的那样,我可以简单地插入/更新我喜欢的特定列而没有问题:

INSERT INTO tlg_question (q_title) VALUES (@q_title)";

p/s:我是SQLite和C#的新手,如果您知道实际发生的事情,请建议/纠正我。

谢谢! :)