2014-03-24 39 views
0
 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 DB端的存儲過程。存儲過程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 

我無法在數據庫中使用INSERT

在這方面請幫助

+0

在應用程序代碼中的參數名稱必須在您所呼叫的數據庫匹配底層存儲過程。 –

回答

1

您在存儲過程中參數名@id但你逝去的@empcode

變化

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

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

其實沒有一個匹配。 @id只是一個例子。 –

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); 
+0

謝謝....問題在這裏...使用(cmd = new SqlCommand(「empInsert」,conn))......它是....使用(cmd = new SqlCommand(「dbo.empInsert 「,conn)) – DastgirKhan

+0

當您將存儲過程名稱的前導和尾隨空白修剪掉時,我會檢查它是否成功。這也可能是問題所在,嘗試像這樣:'new SqlCommand(「empInsert」,conn))''。 –