获取最近添加的记录的主键并作为外键插入另一个表

时间:2016-05-14 10:13:57

标签: c# mysql asp.net

我使用asp.net作为前端而MySQL作为后端。 我有两张桌子"注册"和"用户"。 我有一份注册表,我有注册详细信息和登录详细信息。 文用户点击注册注册详细信息保存到"注册"并将登录详细信息保存到"用户"使用表注册的外键Reg_Id。

这是我的代码:

DateTime dob = DateTime.Parse(txtDob.Text);
string formattedDate = dob.ToString("yyyy-MM-dd");

string qry = "insert into Registration(First_Name,Last_Name,Dob,Place,Zip,Phone_Number)values(@fname,@lname,@dob,@place,@zip,@phone);SELECT SCOPE_IDENTITY()";


MySqlCommand cmd = new MySqlCommand(qry, Connection.get());

cmd.Parameters.AddWithValue("@fname", txtFname.Text);

cmd.Parameters.AddWithValue("@lname", txtLname.Text);

cmd.Parameters.AddWithValue("@dob", formattedDate);

cmd.Parameters.AddWithValue("@place", txtPlace.Text);

cmd.Parameters.AddWithValue("@zip", txtZip.Text);

cmd.Parameters.AddWithValue("@phone", txtPhone.Text);

cmd.ExecuteNonQuery();

int modified = (int)cmd.ExecuteScalar(); 

Connection.close();

string qryToUser = "insert into User(User_Name,Password)values(@user,@password)";

MySqlCommand cmd1 = new MySqlCommand(qryToUser, Connection.get());

cmd.Parameters.AddWithValue("@user", txtUsername.Text);

cmd.Parameters.AddWithValue("@password", txtPasswordConfirm.Text);

cmd1.ExecuteNonQuery();

我无法使用cmd.ExecuteScalar()方法获取REG_Id。 有没有其他方式或我做错了什么??? 请有人帮帮我

2 个答案:

答案 0 :(得分:2)

您可以使用LastInsertedId字段:

cmd.ExecuteNonQuery();
long modified = cmd.LastInsertedId;

答案 1 :(得分:0)

在调用cmd.ExecuteNonQuery()方法之前,您似乎已经执行了ExecuteScalar()。我猜第二次调用可能会失败,因此不会返回id。

也许您应该查看how to use MySQL with C#

上的教程