为什么这些代码的工作,但不添加记录到我的数据库

为什么这些代码的工作,但不添加记录到我的数据库

问题描述:

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(); 
+1

您是否收到任何错误?我认为从你的代码中,在执行查询之前你并没有打开连接。你应该做一个conn.Open() – Qiqo

+0

打开连接并在使用后处置资源。用作参考:https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand(v=vs.110).aspx – Artem

+0

欢迎来到SO!请仔细阅读以下内容并适当修改您的问题: https://stackoverflow.com/help/how-to-ask – garfbradaz

那么,如果它不添加记录到数据库,你几乎可以说它的工作,你能吗?

您在参数中缺少@。取而代之的

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(); 

//尝试这个代码,这一定会适用于ü

+0

我通常不会打扰downvoting答案,但您发布的代码是一个安全风险,因为它是SQL注入攻击的开放门户。 –

+0

是的,如果安全是问题,那么我们应该使用这个cmd.Parameters.Add(“@ basvuru_no”,SqlDbType.VarChar).Value = textBox1.Text; –

+0

安全始终是一个问题。即使在编写办公桌面应用程序时也是如此 –