【问题标题】:Inserting new row in sql database table在sql数据库表中插入新行
【发布时间】:2012-12-22 07:45:54
【问题描述】:

我的应用程序中有文本框。在这些文本框中输入的数据将被插入到数据库中。 commandString 只接受字符串类型。那么,如何实现插入语句呢?

string cmdString="INSERT INTO books (name,author,price) VALUES (//what to put in here?)"

我需要为每个值加入 cmdString 和 textBox.Text 还是有更好的替代方法?

【问题讨论】:

  • 如果您告诉我们您使用的是什么编程语言,它会有所帮助。

标签: c# .net sql insert


【解决方案1】:

使用CommandParameter防止SQL Injection

// other codes
string cmdString="INSERT INTO books (name,author,price) VALUES (@val1, @va2, @val3)";
using (SqlCommand comm = new SqlCommand())
{
    comm.CommandString = cmdString;
    comm.Parameters.AddWithValue("@val1", txtbox1.Text);
    comm.Parameters.AddWithValue("@val2", txtbox2.Text);
    comm.Parameters.AddWithValue("@val3", txtbox3.Text);
    // other codes.
}

完整代码:

string cmdString="INSERT INTO books (name,author,price) VALUES (@val1, @va2, @val3)";
string connString = "your connection string";
using (SqlConnection conn = new SqlConnection(connString))
{
    using (SqlCommand comm = new SqlCommand())
    {
        comm.Connection = conn;
        comm.CommandString = cmdString;
        comm.Parameters.AddWithValue("@val1", txtbox1.Text);
        comm.Parameters.AddWithValue("@val2", txtbox2.Text);
        comm.Parameters.AddWithValue("@val3", txtbox3.Text);
        try
        {
            conn.Open();
            comm.ExecuteNonQuery();
        }
        Catch(SqlException e)
        {
            // do something with the exception
            // don't hide it
        }
    }
}

【讨论】:

  • 我实际上对数据库知之甚少,只有 c# 的知识。能否请您告诉我,上面的代码足以将数据插入数据库,稍后可用,还是需要添加一些其他语句?
  • 查看我的更新答案,sn-p 将在数据库中插入一条记录。
【解决方案2】:

您想保护自己免受 SQL 注入的侵害。从字符串构建 sql 是一种不错的做法,至少非常可怕。

如何:防止 ASP.NET 中的 SQL 注入 http://msdn.microsoft.com/en-us/library/ff648339.aspx

注入 sql 的 50 种方法 http://www.youtube.com/watch?v=5pSsLnNJIa4

实体框架 http://msdn.microsoft.com/en-us/data/ef.aspx

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-16
    • 2012-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-19
    • 2019-08-17
    相关资源
    最近更新 更多