繁体   English   中英

如何使用 sqlcommandbuilder 对象在 sql server 中插入新行

[英]how insert new row in sql server using sqlcommandbuilder object

Sql 中有一个名为 Student 的表,其中定义了 4 列。 第一列是由身份自动递增的 ID。 当我尝试在 sql 中插入数据时,出现以下错误:“SqlCommandBuilder 对象上的关键字‘where’附近的语法不正确”

    protected void Button1_Click(object sender, EventArgs e)
    {
        string cs = ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString;
        SqlConnection con = new SqlConnection(cs);

        string sqlQuery = "insert into Student values where = " + TextStudentID.Text;

        SqlDataAdapter da = new SqlDataAdapter(sqlQuery, con);

        SqlCommandBuilder builder = new SqlCommandBuilder(da);

        DataSet ds = (DataSet)ViewState["dataset"];

        SqlCommand cmd = builder.GetInsertCommand();
        cmd.Parameters["@StudentName"].Value = TextStudentName.Text;
        cmd.Parameters["@Gender"].Value = DropDownList1.SelectedValue;
        cmd.Parameters["@Studentmarks"].Value = TextStudentName.Text;

        cmd.ExecuteNonQuery();

        da.Fill(ds);
    }

提前致谢

您的插入语法不正确。 假设您的 ID 是主键(身份),您的插入语句应该是这样的:

string sqlQuery = "insert into Student (StudentName, Gender, Studentmarks) values (@StudentName, @Gender, @Studentmarks)";

ID 将自动插入并与您传递的其他值一起自动递增。

您应该稍微清理一下代码并将 SqlConnection 放入 using 块中,以便正确处理。

using (SqlConnection con = new SqlConnection(cs))
{
   // your code
}

https://www.dotnetperls.com/sqldataadapter

如果您打算以这种方式向命令添加参数,则需要使用AddWithValue ,但要注意错误隐式类型转换的可能性。

例子:

cmd.Parameters.AddWithValue("@StudentName", TextStudentName.Text);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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