繁体   English   中英

通过C#在SQL中插入数据

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM