C# 使用c访问时未提交数据#

C# 使用c访问时未提交数据#,c#,C#,插入数据库的数据显示在数据库中,但经过一段时间后,它将自动删除。显然,您的代码中有一个输入错误,如果表的Id不是自动递增的,请更正参数名称: try { if (connection.con.State == ConnectionState.Closed) connection.con.Open(); com = new OleDbCommand("insert into dealer values(@id,@a1,@a2,@a3,@a4,@a5,@a6)", connectio

插入数据库的数据显示在数据库中,但经过一段时间后,它将自动删除。显然,您的代码中有一个输入错误,如果表的Id不是自动递增的,请更正参数名称:

try {
    if (connection.con.State == ConnectionState.Closed) connection.con.Open();
    com = new OleDbCommand("insert into dealer values(@id,@a1,@a2,@a3,@a4,@a5,@a6)", connection.con);
    com.Parameters.AddWithValue("@a1", int.Parse(t1.Text));
    com.Parameters.AddWithValue("@a2", t2.Text);
    com.Parameters.AddWithValue("@a3", t3.Text);
    com.Parameters.AddWithValue("@a4", t4.Text);
    com.Parameters.AddWithValue("@a5", t5.Text);
    com.Parameters.AddWithValue("@a6", t6.Text);
    com.Parameters.AddWithValue("@a7", c1.Text);
    int i = com.ExecuteNonQuery();
    if (i > 0) {
        MessageBox.Show("dealer Registration Seccessfully !!");
    }
} catch (Exception ex) {
    MessageBox.Show(ex.ToString());
} finally {
    connection.con.Close();
}

如果表的Id是自动递增的,不要在INSERT命令中设置它的值。

com.Parameters.AddWithValue(“@a7”,c1.Text);“@a7”的定义在哪里?你也没有在AddWithValue中使用“@id”是否需要解析?@AnikIslamAbhi:我不确定,但我不这么认为。他没有指定参数类型。从逻辑上说,无论我发送什么,它都会作为字符串传递,然后根据列数据类型经过转换阶段。@AnikIslamAbhi:是的,为了防止运行时错误,他应该这样做(我不知道类型),但这段代码没有编译器错误。
try {
    if (connection.con.State == ConnectionState.Closed) connection.con.Open();
    com = new OleDbCommand("insert into dealer values(@id,@a1,@a2,@a3,@a4,@a5,@a6)", connection.con);
    com.Parameters.AddWithValue("@id", int.Parse(t1.Text)); // Change argument name to @id
    com.Parameters.AddWithValue("@a1", t2.Text);
    com.Parameters.AddWithValue("@a2", t3.Text);
    com.Parameters.AddWithValue("@a3", t4.Text);
    com.Parameters.AddWithValue("@a4", t5.Text);
    com.Parameters.AddWithValue("@a5", t6.Text);
    com.Parameters.AddWithValue("@a6", c1.Text);
    ...