猿问

使用c#中的参数调用存储过程

使用c#中的参数调用存储过程

我可以在我的程序中进行删除、插入和更新,我试图通过调用我的数据库中创建的存储过程来进行插入。

这是一个按钮插入我使工作良好。

private void btnAdd_Click(object sender, EventArgs e){
        SqlConnection con = new SqlConnection(dc.Con);
        SqlCommand cmd = new SqlCommand("Command String", con);

        da.InsertCommand = new SqlCommand("INSERT INTO tblContacts VALUES (@FirstName, @LastName)", con);
        da.InsertCommand.Parameters.Add("@FirstName", SqlDbType.VarChar).Value = txtFirstName.Text;
        da.InsertCommand.Parameters.Add("@LastName", SqlDbType.VarChar).Value = txtLastName.Text;

        con.Open();
        da.InsertCommand.ExecuteNonQuery();
        con.Close();

        dt.Clear();
        da.Fill(dt);
    }

这是调用名为sp_Add_contact添加联系人。两个参数sp_Add_contact(@FirstName,@LastName)..我在谷歌上搜索了一些很好的例子,但没有发现什么有趣的地方。

private void button1_Click(object sender, EventArgs e){
        SqlConnection con = new SqlConnection(dc.Con);
        SqlCommand cmd = new SqlCommand("Command String", con);
        cmd.CommandType = CommandType.StoredProcedure;

        ???

        con.Open();
        da. ???.ExecuteNonQuery();
        con.Close();

        dt.Clear();
        da.Fill(dt);
    }


波斯汪
浏览 589回答 3
3回答

四季花海

这与运行查询几乎是一样的。在原始代码中,您将创建一个命令对象,并将其放入cmd变量,永远不要使用它。然而,在这里,您将使用它而不是da.InsertCommand.此外,请使用using对于所有一次性对象,以确保它们被正确地处理:private void button1_Click(object sender, EventArgs e) {   using (SqlConnection con = new SqlConnection(dc.Con)) {     using (SqlCommand cmd = new SqlCommand("sp_Add_contact", con)) {       cmd.CommandType = CommandType.StoredProcedure;       cmd.Parameters.Add("@FirstName", SqlDbType.VarChar).Value = txtFirstName.Text;       cmd.Parameters.Add("@LastName", SqlDbType.VarChar).Value = txtLastName.Text;       con.Open();       cmd.ExecuteNonQuery();     }   }}

慕尼黑8549860

您必须添加参数,因为SP需要它来执行using (SqlConnection con = new SqlConnection(dc.Con)){     using (SqlCommand cmd = new SqlCommand("SP_ADD", con))     {         cmd.CommandType = CommandType.StoredProcedure;         cmd.Parameters.AddWithValue("@FirstName", txtfirstname);         cmd.Parameters.AddWithValue("@LastName", txtlastname);         con.Open();         cmd.ExecuteNonQuery();     }            }
随时随地看视频慕课网APP
我要回答