C# 无法使用C将插入到SQLite表中

C# 无法使用C将插入到SQLite表中,c#,sqlite,C#,Sqlite,单击时的我的按钮如下所示: 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 = txtCo

单击时的我的按钮如下所示:

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);
}
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);
}
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;
    }
}
AddTicket如下所示:

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);
}
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);
}
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;
    }
}
我可以看到这个问题是:

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 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);
}
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);
}
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中,因此工作正常!
请记住,如果您正在使用SQL Lite数据库浏览器读取数据库,请确保加载正确的数据库

您是否在代码中的某个地方提交了更改?@GMB:否,我单击“保存”,它会转到“添加票证”,然后转到“执行写入”。@LarsTech:我想执行传递7个参数的查询。@LarsTech:我想cmd.ExecuteNonQuery;会执行查询吗?我想我误读了你的问题,以为你期待的是7行。返回值为1表示它有效。您可能正在查看错误的数据库?