在 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();
}
我没有得到答案。
您需要将值括在单引号中:
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",并检查是否可以使用该连接字符串访问数据库