我实际上是新的asp.net c#我想知道为什么这个代码不起作用。我想要做的就是将数据表存储到SQL Server数据库中。
我有2个表,我希望输入的数据表存储在数据库中。查看select语句以检索主键,以将其作为外键存储在另一个表中
String q = "Insert into dbo.requests(request_date,request_type,visit_date,reason,user_id,status_id)values('" + DateTime.Now.ToString() + "','" + DropDownList1.SelectedValue.ToString() + "','" + TextBox8.Text.ToString() + "','" + TextBox9.Text.ToString() + "','"+ 1+"','"+ 2+"')";
SqlCommand cmd = new SqlCommand(q, con);
cmd.ExecuteNonQuery();
con.Close();
con2.Open();
if (con2.State == System.Data.ConnectionState.Open)
{
String a = "select top 1 request_id from dbo.requests where request_date= CAST(GETDATE() AS DATE and user_id=999 order by request_id DESC ";
SqlCommand cmd2 = new SqlCommand(a, con2);
int r = cmd2.ExecuteNonQuery();
}
con2.Close();
con3.Open();
if (con3.State == System.Data.ConnectionState.Open)
{
String b = "INSERT into dbo.visitor(visitor_Fname,visitor_Mname,visitor_family_name,visitor_id,visitor_mobile,request_id,place_of_work,country_name) values ('" + TextBox1.Text.ToString() + "','" + TextBox2.Text.ToString() + "','" + TextBox3.Text.ToString() + "','" + TextBox4.Text.ToString() + "' , '" + TextBox5.Text.ToString() + "','r', '" + TextBox6.Text.ToString() + "', '" + TextBox7.Text.ToString() + "' )";
SqlCommand cmd3 = new SqlCommand(b, con3);
cmd3.ExecuteNonQuery();
}
你应该改变它
int r = cmd2.ExecuteNonQuery();
至
int r = (int)cmd2.ExecuteScalar();
要检索只选择一个字段,请使用ExecuteScalar
而不是ExecuteNonQuery
。 ExecuteNonQuery
不返回选择字段。
只需使用数据表将request_id存储在变量中。实际上你在表中存储'r'是错误的。尝试从变量中的select语句存储request_id,它将起作用。