在 C# 窗体中插入记录

本文关键字:插入 记录 窗体 | 更新日期: 2023-09-27 17:56:32

我正在使用C#

我想在表中插入记录。我正在使用MS Access数据库。我有以下代码:

private void button1_Click(object sender, EventArgs e)
{
    con.ConnectionString = "PROVIDER=Microsoft.Jet.OLEDB.4.0;
        Data Source=C:''Documents and Settings''mayur patil''
                       My Documents''Dairy_db''tblCompany.mdb";
    con.Open();
    OleDbCommand cmd = new OleDbCommand(
       "INSERT INTO tblCompany (CoCode,CoName_mar)
       VALUES("+textBox1.Text+","+textBox4.Text+")", con);
    cmd.ExecuteNonQuery();
    con.Close();
    this.Hide();
    Form1 f = new Form1();
    f.ShowDialog();
} 

我没有得到答案。

在 C# 窗体中插入记录

您需要将值括在单引号中:

    OleDbCommand cmd = new OleDbCommand(
       "INSERT INTO tblCompany (CoCode,CoName_mar)
       VALUES ('" + textBox1.Text + "', '" + textBox4.Text + "')", con);

创建命令的更好方法是向其添加参数。

这使您完全免于考虑引号的必要性,并且作为重要的"副作用",您可以消除SQL注入攻击的风险。

例如,您可以在此处找到有关 MSDN 的更完整说明。

然后,您的命令可能如下所示:

OleDbCommand cmd = new OleDbCommand(
   "INSERT INTO tblCompany (CoCode,CoName_mar)
   VALUES(@ParamCoCode, @ParamCoName_mar)", con);
OleDbParameter paramCoCode = new OleDbParameter();
paramCoCode.ParameterName = "@ParamCoCode";
paramCoCode.SqlDbType = SqlDbType.NVarChar;
paramCoCode.Value = categoryName;
OleDbParameter paramCoName_mar = new OleDbParameter ();
paramCoName_mar.ParameterName = "@ParamCoCode";
paramCoName_mar.SqlDbType = SqlDbType.NVarChar;
paramCoName_mar.Value = categoryName;
// Add the parameters to the Parameters collection. 
cmdParameters.Add(paramCoCode);
cmdParameters.Add(paramCoName_mar);
cmd.ExecuteNonQuery();
con.Close();

请记住,参数的添加顺序与 SQL 语句中出现的顺序相同。

如果列CoName_mar是字符串类型,则需要更改 INSERT 语句,如下所示:

INSERT INTO tblCompany (CoCode,CoName_mar)
       VALUES(" + textBox1.Text + ", '" + textBox4.Text + "')"

只需注意 textBox4 值前后的单引号字符。

我假设CoCode是数字类型。

希望有帮助。

您能否在连接字符串中提供providerName="System.Data.OleDb",并检查是否可以使用该连接字符串访问数据库