我无法将持续插入的autoincrement id值发送到另一个表 这是我的代码 我收到错误是必须声明标量变量“@ userid”。
<form role="form" method="post" action="<?php echo site_url('purchase/add_product_master');?>">
答案 0 :(得分:1)
我想我遇到了你的问题。你写过了
SqlCommand cmd2 = new SqlCommand("insert into sampfk values (@userid, @address, @emailid)", cn);
cmd.Parameters.AddWithValue("@userid", ID);
cmd.Parameters.AddWithValue("@emailid", TextBox3.Text);
cmd.Parameters.AddWithValue("@address", TextBox4.Text)
但正在执行
cmd2.ExecuteNonQuery();
你应该在cmd2中添加参数而不是像
那样添加cmdcmd2.Parameters.AddWithValue("@userid", ID);
cmd2.Parameters.AddWithValue("@emailid", TextBox3.Text);
cmd2.Parameters.AddWithValue("@address", TextBox4.Text)
答案 1 :(得分:0)
检查以下行。
ID = Convert.ToInt32(cmd.ExecuteScalar());
如果这不返回任何内容,则使用ID的默认值,可能为0.
或者在声明中添加默认值int id = 0;
答案 2 :(得分:0)
您可以单步执行上述操作,您应该多使用using
并尽可能尝试嵌套查询。经常打开TCP连接会产生一些确认开销。
using (SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["samplefkConnectionString"].ConnectionString))
{
string query = @"INSERT INTO sampdb VALUES (@name,@phone);
INSERT INTO sampfk VALUES (SCOPE_IDENITTY(), @address, @emailid); ";
using (SqlCommand cmd = new SqlCommand(query, cn))
{
cmd.Parameters.AddWithValue("@name", TextBox1.Text);
cmd.Parameters.AddWithValue("@phone", TextBox2.Text);
cmd.Parameters.AddWithValue("@emailid", TextBox3.Text);
cmd.Parameters.AddWithValue("@address", TextBox4.Text);
cmd.ExecuteNonQuery();
}
}
答案 3 :(得分:0)
试试这个
using (SqlConnection cn = new SqlConnection(connectionStr))
{
string sql1 = "insert into sampdb values(@name,@phone);"+ "Select Scope_Identity()";
using (SqlCommand cmd = new SqlCommand(sql1, cn))
{
cmd.Parameters.AddWithValue("@name", TextBox1.Text);
cmd.Parameters.AddWithValue("@phone", TextBox2.Text);
cn.Open();
ID = cmd.ExecuteNonQuery();
}
//ID = Convert.ToInt32(cmd.ExecuteScalar());
cn.Close();
TextBox1.Text = "";
TextBox2.Text = "";
string sql2 = "insert into sampfk values (@userid, @address, @emailid)";
using (SqlCommand cmd = new SqlCommand(sql2, cn))
{
cmd.Parameters.AddWithValue("@userid", ID);
cmd.Parameters.AddWithValue("@emailid", TextBox3.Text);
cmd.Parameters.AddWithValue("@address", TextBox4.Text);
cn.Open();
cmd.ExecuteNonQuery();
}
con.Dispose();
con.Close();
}