使用主键在两个表中插入数据

时间:2016-01-07 12:08:32

标签: c#

这是我的BottomSave我有两个表Employee和Contract,主键是Enumber。

将数据添加到表员工中

但是在将数据添加到表合同中但没有添加

因为我的主键。在插入合同时有什么问题吗?

                MySQL connect = new MySQL();
                connect.Connection_Today();
                SqlCommand cmd = new SqlCommand();
                cmd.Connection = MySQL.con;

                // Adding data to table Employee from database

                cmd.CommandText = "Insert into Employee(Enumber,Inumber,Pnumber,Fname,Mname,Sname,Age,Bdate,Gender,Mstatus,Nationality,Eaddress,Cnumber,Picture) Values (@Enumber,@Inumber,@Pnumber,@Fname,@Mname,@Sname,@Age,@Bdate,@Gender,@Mstatus,@Nationality,@Eaddress,@Cnumber,@Picture)";
                cmd.Parameters.AddWithValue("@Enumber", txtEnumber.Text);
                cmd.Parameters.AddWithValue("@Inumber", txtInumber.Text);
                cmd.Parameters.AddWithValue("@Pnumber", txtPassport.Text);
                cmd.Parameters.AddWithValue("@Fname", txtPassport.Text);
                cmd.Parameters.AddWithValue("@Mname", txtMname.Text);
                cmd.Parameters.AddWithValue("@Sname", txtSname.Text);
                cmd.Parameters.AddWithValue("@Age", txtAge.Text);
                cmd.Parameters.AddWithValue("@Bdate", DtpBdate.Text);
                cmd.Parameters.AddWithValue("@Gender", cbGender.Text);
                cmd.Parameters.AddWithValue("@Mstatus", cbMstatus.Text);
                cmd.Parameters.AddWithValue("@Nationality", txtNationality.Text);
                cmd.Parameters.AddWithValue("@Eaddress", txtEAddress.Text);
                cmd.Parameters.AddWithValue("@Cnumber", txtCnumber.Text);
                cmd.Parameters.AddWithValue("@Picture", ImageToBase64(PbImage.Image,System.Drawing.Imaging.ImageFormat.Jpeg));
                cmd.ExecuteNonQuery();



                // Adding data to table Contract from database
                cmd.CommandText = "Insert into Contract(Enumber,Position,Salary,CDuration,Scontract,Econtract) Values(@Enumber,@Position,@Salary,@CDuration,@Scontract,@Econtract)";
                cmd.Parameters.AddWithValue("@Enumber", txtEnumber.Text);
                cmd.Parameters.AddWithValue("@Position", txtPosition.Text);
                cmd.Parameters.AddWithValue("@Salary", txtSalary.Text);
                cmd.Parameters.AddWithValue("@CDuration", txtCDuration.Text);
                cmd.Parameters.AddWithValue("@Scontract", dtpStart.Text);
                cmd.Parameters.AddWithValue("@Econtract", dtpEnd.Text);
                cmd.ExecuteNonQuery();
                connect.Disconnect();

1 个答案:

答案 0 :(得分:2)

您需要先使用SqlParameterCollection.Clear method清除参数,然后再将它们放入第二个查询中,因为您的命令已经具有在第一个命令中添加的参数名称。

cmd.CommandText = "Insert into Contract(Enumber,Position,Salary,CDuration,Scontract,Econtract) Values(@Enumber,@Position,@Salary,@CDuration,@Scontract,@Econtract)";
cmd.Parameters.Clear();
...

还可以使用using语句自动处理您的连接和命令,而不是手动调用CloseDispose方法。

using(var con = new SqlConnection(conString))
using(var cmd = con.CreateCommand())
{
    // Set your CommandText property of your command with parameters.
    // Add your parameters values.
    // Open your connection
    // Execute your query
    // Set your second command to your CommandText property
    // Clear your parameters.
    // Add new parameter values.
    // Execute your second query.
}

顺便说一下,尽量不要AddWithValue使用knnFit <- train(Direction ~ ., data = training, method = "knn", preProcess = c("center","scale")) It may generate unexpected and surprising results sometimes。使用Add method重载来指定参数类型及其大小。