一对多关系数据发送

时间:2017-10-05 06:02:24

标签: c# sql-server

我无法将持续插入的autoincrement id值发送到另一个表 这是我的代码 我收到错误是必须声明标量变量“@ userid”。

<form role="form" method="post" action="<?php echo site_url('purchase/add_product_master');?>"> 

4 个答案:

答案 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中添加参数而不是像

那样添加cmd
cmd2.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();
}