繁体   English   中英

无法使用 C# 插入 SQLite 表

[英]Cannot INSERT into SQLite table using C#

我的点击按钮如下所示:

private void button1_Click(object sender, EventArgs e)
{
    ticket.Details td = new ticket.Details();

    td.@ref = txtRef.Text;
    td.subject = txtSubject.Text;
    td.contact_name = txtContact_Name.Text;
    td.company_name = txtCompany_Name.Text;
    td.description = rtDescription.Text;
    td.business_impact = rtBusiness_Impact.Text;
    td.severity = txtSeverity.Text;

    var ticket = new ticket();

    ticket.AddTicket(td);
}

AddTicket看起来像这样:

public int AddTicket(Details details)
{
        const string query = "INSERT INTO support(ref, subject, contact_name, company_name, description, business_impact, severity) VALUES (@ref, @subject, @contact_name, @company_name, @description, @business_impact, @severity)";

        //here we are setting the parameter values that will be actually 
        //replaced in the query in Execute method
        var args = new Dictionary<string, object>
{
    {"@ref", details.@ref},
    {"@subject", details.subject},
    {"@contact_name", details.contact_name},
    {"@company_name", details.company_name},
    {"@description", details.description},
    {"@business_impact", details.business_impact},
    {"@severity", details.severity}
    };

    return ExecuteWrite(query, args);
}

当我看:

return ExecuteWrite(query, args);

我可以看到该查询是:

INSERT INTO support(ref, subject, contact_name, company_name, description, business_impact, severity) 
VALUES (@ref, @subject, @contact_name, @company_name, @description, @business_impact, @severity)

和 args 是7

我的ExecuteWrite看起来像这样:

private int ExecuteWrite(string query, Dictionary<string, object> args)
{
    int numberOfRowsAffected;

    // setup the connection to the database
    using (var con = new SQLiteConnection("Data Source=main.db"))
    {
        con.Open();

        // open a new command
        using (var cmd = new SQLiteCommand(query, con))
        {
            // set the arguments given in the query
            foreach (var pair in args)
            {
                cmd.Parameters.AddWithValue(pair.Key, pair.Value);
            }

            cmd.Prepare();

            // execute the query and get the number of row affected
            numberOfRowsAffected = cmd.ExecuteNonQuery();
        }

        return numberOfRowsAffected;
    }
}

一切看起来都不错,我的numberOfRowsAffected显示 1 行,我的 args 是 7,这是正确的。

我没有收到任何错误,但我只是在main.db SQLite 数据库文件中没有看到任何受影响的数据。

我究竟做错了什么?

main.db实际上位于\\bin\\Debug ,因此它工作正常! 请记住,如果您使用 DB Browser for SQL Lite 读取数据库,请确保加载正确的数据库!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM