在sql数据库表中插入新行

Vic*_*jee 6 .net c# sql insert

我的应用程序中有textBoxes.在这些textBox中输入的数据将插入数据库中.commandString仅接受字符串类型.那么,我该如何实现insert语句呢?

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

我是否需要为每个值加入cmdString和textBox.Text,还是有更好的选择?

Joh*_*Woo 23

使用Command和Parameter防止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.
}
Run Code Online (Sandbox Code Playgroud)

完整代码:

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
        }
    }
}
Run Code Online (Sandbox Code Playgroud)