我有兩個表,一個用於存儲個人信息,一個用於存儲他的電話號碼,TBL -persons使用forgin鍵連接到tbl_phones表。如何插入兩個與sql相關的表?
我有一個表格插入到兩個表,這是功能
private void save()
{
SqlCommand cmd = new SqlCommand("insert into tbl_persons (name,address,fax,mobile,email,website) values (@name,@address,@fax,@mobile,@email,@website)" + "Select Scope_Identity()", conn);
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("@name", T_name.Text.Trim());
cmd.Parameters.AddWithValue("@address", T_address.Text.Trim());
cmd.Parameters.AddWithValue("@fax", T_fax.Text.Trim());
cmd.Parameters.AddWithValue("@mobile", T_mobile.Text.Trim());
cmd.Parameters.AddWithValue("@email", T_mobile.Text.Trim());
cmd.Parameters.AddWithValue("@website", T_mobile.Text.Trim());
int ID = Int32.Parse(cmd.ExecuteScalar().ToString());
SqlCommand cmd2 = new SqlCommand("insert into tbl_phones (phone,person_id) values (@phone,@person)", conn);
cmd2.CommandType = CommandType.Text;
cmd2.Parameters.AddWithValue("@phone", T_phone.Text.Trim());
cmd2.Parameters.AddWithValue("@person", ID);
int val = cmd.ExecuteNonQuery();
int val2 = cmd2.ExecuteNonQuery();
if (val > 0)
{
MessageBox.Show("تم إدخال البيانات بنجاح"+ID, "تم", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign | MessageBoxOptions.RtlReading);
resetFields();
GetDate();
}
}
但錯誤是人的信息被插入兩次和電話號碼被插入一個一個的時候,是什麼錯誤 ?
的ExecuteScalar()是相同的的ExecuteNonQuery();? – amer
@amer是,ExcecuteScalar返回結果集中返回的第一行的第一列。 ExecuteNonQuery返回受SQL命令影響的行數。所以是的,從某種意義上說,它們是一樣的。 – Icarus