存储过程sql数据插入错误

时间:2014-03-24 19:25:02

标签: c# sql-server stored-procedures ado.net

     private void btnInsert_Click(object sender, EventArgs e)
     {     
       empCode = txtCode.Text;
       empName = txtName.Text;
       empCell = txtCell.Text;
       empAddress = txtAddress.Text;
        try
        {
            using (cmd = new SqlCommand(" empInsert ", conn))
            {
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.Add("@empcode", SqlDbType.VarChar).Value = empCode;
                cmd.Parameters.Add("@empname", SqlDbType.VarChar).Value = empName;
                cmd.Parameters.Add("@empcell", SqlDbType.VarChar).Value = empCell;
                cmd.Parameters.Add("@empaddress", SqlDbType.VarChar).Value = empAddress;
                conn.Open();
                cmd.ExecuteNonQuery();
            }
            MessageBox.Show("succesfully inserted", "Congrates");
        }
        catch (Exception ex)
        {
            MessageBox.Show("can't Insert there is error :" + ex, "Error");
        }

        finally
        {
            conn.Close();
        }
    }

以下是SQL数据库端的存储过程。

use GDK
GO
create PROCEDURE dbo.empInsert

@id     as    VARCHAR(10,
@name as VARCHAR(10),
@cell as  VARCHAR(10),
@address     as   VARCHAR(20) 

AS

BEGIN

INSERT INTO EmployeeRecord(empcode,empname,empcell,empaddress) VALUES( @id, @name,  @cell, @address)   
END

我无法在DB中INSERT

请在这方面提供帮助

2 个答案:

答案 0 :(得分:1)

您在存储过程中有参数名@id,但是您正在传递@empcode

更改

cmd.Parameters.Add("@empcode", SqlDbType.VarChar).Value = empCode;

cmd.Parameters.Add("@id", SqlDbType.VarChar).Value = empCode;

答案 1 :(得分:0)

问题是您的参数名称不匹配。

来自MSDN

  

使用带有SqlCommand的参数执行存储的SQL Server时   过程,添加到参数的参数的名称   集合必须与存储的参数标记的名称匹配   过程

所以这就是你所需要的:

cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@id", empCode);
cmd.Parameters.AddWithValue("@name", empName);
cmd.Parameters.AddWithValue("@cell", empCell);
cmd.Parameters.AddWithValue("@address", empAddress);