为什么这些代码的工作,但不添加记录到我的数据库
SqlConnection conn = new SqlConnection();
conn.ConnectionString = @"Data Source=CASPER_NIRVANA\FARID;Initial Catalog=proje;Integrated Security=True";
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "INSERT INTO projetablosu(basvuru_no)VALUES(@basvuru_no)";
cmd.Parameters.AddWithValue("basvuru_no", textBox1.Text);
cmd.ExecuteNonQuery();
那么,如果它不添加记录到数据库,你几乎可以说它的工作,你能吗?
您在参数中缺少@
。取而代之的
cmd.Parameters.AddWithValue("basvuru_no", textBox1.Text);
使用
cmd.Parameters.Add("@basvuru_no", SqlDbType.VarChar).Value = textBox1.Text;
你也应该阅读Can we stop using AddWithValue() already?
而且,阿尔乔姆写道在他的评论,你应该处理您的一次性物品。做正确的方法是用using
声明:
using (var conn = new SqlConnection(@"Data Source=CASPER_NIRVANA\FARID;Initial Catalog=proje;Integrated Security=True"))
{
using (var cmd = new SqlCommand("INSERT INTO projetablosu(basvuru_no)VALUES(@basvuru_no)", conn))
{
cmd.Parameters.Add("@basvuru_no", SqlDbType.VarChar).Value = textBox1.Text;
cmd.ExecuteNonQuery();
}
}
另外请注意,您可以使用构造函数来传递你手动设置你的代码的所有属性,使得代码更短,更具可读性。
SqlConnection conn = new SqlConnection(@"Data Source=CASPER_NIRVANA\FARID;Initial Catalog=proje;Integrated Security=True");
string query = "INSERT INTO projetablosu(basvuru_no)VALUES('"+textBox1.Text+"')";
SqlCommand cmd = new SqlCommand(query,conn);
cmd.ExecuteNonQuery();
//尝试这个代码,这一定会适用于ü
我通常不会打扰downvoting答案,但您发布的代码是一个安全风险,因为它是SQL注入攻击的开放门户。 –
是的,如果安全是问题,那么我们应该使用这个cmd.Parameters.Add(“@ basvuru_no”,SqlDbType.VarChar).Value = textBox1.Text; –
安全始终是一个问题。即使在编写办公桌面应用程序时也是如此 –
您是否收到任何错误?我认为从你的代码中,在执行查询之前你并没有打开连接。你应该做一个conn.Open() – Qiqo
打开连接并在使用后处置资源。用作参考:https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand(v=vs.110).aspx – Artem
欢迎来到SO!请仔细阅读以下内容并适当修改您的问题: https://stackoverflow.com/help/how-to-ask – garfbradaz