[英]Data insertion in sql through C#
我已经成功创建了数据库连接,但是现在在插入数据时遇到了问题。 这是我的代码:
String Connection = null;
SqlConnection con;
SqlCommand cmd;
String sql = null;
Connection="Data Source=DELL\\SQLEXPRESS; initial Catalog= BSSE;Integrated Security=True";
con = new SqlConnection(Connection);
sql = "INSERT INTO Records (Roll_No,Name,Marks) VALUES (" + textBox1.Text + "," + textBox2.Text + "," + textBox3.Text + ");";
try
{
con.Open();
cmd = new SqlCommand(sql, con);
cmd.ExecuteNonQuery();
MessageBox.Show ("Success of data insertion ");
cmd.Dispose();
con.Close();
}
catch (Exception ex)
{
MessageBox.Show("Can not open connection ! ");
}
首先,您的SQL语句不正确。 您缺少值字段之间的单引号。 稍后,您将使用字符串连接来构建SQL语句,这很危险,因为它可能会暴露给SQL Injection 。 请改用参数化查询 。
try
{
con.Open();
cmd = new SqlCommand("INSERT INTO Records (Roll_No,Name,Marks) VALUES (@rollNo, @Name, @Marks)", con);
cmd.Parameters.AddWithValue("@rollNo", textBox1.Text);
cmd.Parameters.AddWithValue("@Name", textBox2.Text);
cmd.Parameters.AddWithValue("@Marks", textBox3.Text);
cmd.ExecuteNonQuery();
MessageBox.Show ("Success of data insertion ");
cmd.Dispose();
con.Close();
}
catch (Exception ex)
{
MessageBox.Show("Can not open connection ! ");
}
检查您的连接字符串。 我通常将其写为:
字符串连接= @“数据源= DELL \\ SQLEXPRESS;初始目录= BSSE;集成安全性= true”;
如果滚动数应为整数,则需要对其进行解析。
int.Parse(textBox1.Text)
我建议使用存储过程,而不是从c#应用程序发送SQL代码块,这里是对SQL存储过程的引用: https : //msdn.microsoft.com/zh-cn/library/ms190782.aspx 。 您可以通过在查询中添加参数而不是纯文本来减少SQL注入的可能性,并且还需要验证输入。 您也可以使用参数创建调用。 有很多方法可以从C#调用SQL数据库查询,这是有关存储过程的更多信息,可以为您提供线索: http : //csharp-station.com/Tutorial/AdoDotNet/Lesson07
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.