我試圖使用存儲過程將值插入到兩個表中。如何將主鍵值傳遞給C#中的外鍵使用存儲過程
這是存儲過程我用
ALTER PROCEDURE [dbo].[insert_emp_pics]
@EmpName nvarchar(100),
@Nationality nvarchar(30),
@PassportPic nvarchar(100),
@Pic nvarchar(100)
AS
Begin
set nocount on;
DECLARE @ID int,
@Emp_ID int
insert into Employee (EmpName,Nationality)
values (@EmpName,@Nationality)
set @ID = SCOPE_IDENTITY();
insert into DatePics
(Emp_ID,PassportPic,Pic)
values
(@Emp_ID,@PassportPic ,@Pic)
set @ID_Pics = SCOPE_IDENTITY();
end
這是我的C#語句
private void Savebtn_Click_1(object sender, EventArgs e)
{
if (Nametxt.Text == "" || Nationalitydrp.SelectedItem == null)
{
nameerr.Text = ("*");
nationalityerr.Text = ("*");
}
else
{
SqlCommand com = new SqlCommand();
com.Connection = db.con;
com.CommandType = CommandType.StoredProcedure;
com.CommandText = "insert_emp_pics ";
com.Parameters.AddWithValue("@EmpName", Nametxt.Text);
com.Parameters.AddWithValue("@Nationality", Nationalitydrp.SelectedItem);
com.Parameters.AddWithValue("@Pic", picpath.Text);
com.Parameters.AddWithValue("@PassportPic", pppath.Text);
//These are the relation between two tables
com.Parameters.AddWithValue("@Emp_ID", "@ID");
db.con.Open();
int x = com.ExecuteNonQuery();
db.con.Close();
if (x > 0)
{
MessageBox.Show("Welcome " + Nametxt.Text + " in our organization");
nameerr.Visible = false;
nationalityerr.Visible = false;
Nametxt.Text = null;
Nationalitydrp.SelectedItem = null;
picpath.Text = null;
pppath.Text = null;
}
}
}
錯誤彈出「錯誤轉換數據類型爲nvarchar成int」,並將其寫入數據僅限員工表。
的DatePics.Emp_ID是第二臺
Employee.ID的外鍵的主鍵。假設這些表之間存在一對一的關係。如何將自動生成的值從Employee.ID傳遞給C#中的DatePics.Emp_ID?
謝謝
這個錯誤剛剛出現在C#中,我必須聲明Emp_ID的值'procedure或function'insert_emp_pics'期望參數@Emp_ID',這是沒有提供的' –
您發佈的過程(以及它的版本發佈)不會將@Emp_ID作爲參數。你確定你沒有把它作爲你正在運行的版本中的一個參數嗎? – mayabelle