我使用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。 有没有其他方式或我做错了什么??? 请有人帮帮我
答案 0 :(得分:2)
您可以使用LastInsertedId字段:
cmd.ExecuteNonQuery();
long modified = cmd.LastInsertedId;
答案 1 :(得分:0)
在调用cmd.ExecuteNonQuery()
方法之前,您似乎已经执行了ExecuteScalar()
。我猜第二次调用可能会失败,因此不会返回id。
也许您应该查看how to use MySQL with C#
上的教程