C# 将nvarchar转换为数字以注册记录时出错
这是注册按钮的代码C# 将nvarchar转换为数字以注册记录时出错,c#,sql-server,C#,Sql Server,这是注册按钮的代码 private void bttnRegister_Click(object sender, EventArgs e) { SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["myCon"].ConnectionString); SqlCommand cmd = new SqlCommand("INSERT INTO Student VAL
private void bttnRegister_Click(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["myCon"].ConnectionString);
SqlCommand cmd = new SqlCommand("INSERT INTO Student VALUES (@stu_fname, @stu_lname, @Address, @Phone, @Email, @DateOfBirth, @UserName, @Password, @DateAdded)", con);
con.Open();
cmd.Parameters.AddWithValue("@stu_fname", txtFirstname.Text);
cmd.Parameters.AddWithValue("@stu_lname", txtLastname.Text);
cmd.Parameters.AddWithValue("@Address", txtAddress.Text);
cmd.Parameters.AddWithValue("@Phone", txtPhone.Text);
cmd.Parameters.AddWithValue("@Email", txtEmail.Text);
cmd.Parameters.AddWithValue("@DateOfBirth", DateOfBirth.Value);
cmd.Parameters.AddWithValue("@UserName", txtUsername.Text);
cmd.Parameters.AddWithValue("@Password", txtPassword.Text);
cmd.Parameters.AddWithValue("@DateAdded", DateTime.Now);
cmd.ExecuteNonQuery();
MessageBox.Show("Registration Successful!");
con.Close();
txtFirstname.Clear();
txtLastname.Clear();
txtAddress.Clear();
txtPhone.Clear();
txtEmail.Clear();
txtUsername.Clear();
txtPassword.Clear();
}
您正在将
txtFirstname.Text
,一个字符串插入stu_id
列中,该列为int。插入表时,我始终包含列名,因为它可以防止此类错误,更易于读取和调试,并避免表结构更改时可能出现的一些问题。假设stu_id
是一个标识列,那么您的SQL字符串应该是:
INSERT INTO Student (stu_fname, stu_lname, Address, Phone, Email, DateOfBirth, Username, Password, DateAdded) VALUES (@stu_fname, @stu_lname, @Address, @Phone, @Email, @DateOfBirth, @UserName, @Password, @DateAdded)
即使我更改了SQL,它仍然有相同的结果statement@RaymondLayosa:因为
Phone
是numeric
但AddWithValues
猜测它是varchar
。使用添加(“@Phone”,SqlDbType.Decimal)
。读取。为什么手机是数字的(18,0)?电话号码不是数字,它们是大部分数字组成的字符串,是的。但是在一个数值中不能存储前导0(001=01=1),并且两个前导0的前导+也不能存储在一个数值中numeric
不是电话号码的正确类型。粘性位是正确的。还有,为什么在ado.net中使用直接sql语句,而不是实体框架或其他ORM?甚至至少是对存储过程的调用。