0

我在 mvc 中工作并使用 sql 命令将数据插入我的数据库。

我尝试做的是插入 2 个表,其中一个具有另一个的外键。

如何构建我的 sql 查询以在插入表 Image 时创建条件,将 id 插入表 Content 的外键列中。

 using (SqlConnection cn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString))
            {
    SqlCommand cmd;
    System.Text.StringBuilder sql = new System.Text.StringBuilder();
    sql.Append("insert into Image(FileName)");
    sql.Append("values (@FileName)");

    SqlCommand cmd2;
    System.Text.StringBuilder sql2 = new System.Text.StringBuilder();
    sql.Append("insert into Code(Html,JsCode,Id_Img)");
    sql.Append("values (@Html, @JsCode, @Id_Img)");

    cn.Open();
    cmd = new SqlCommand(sql.ToString(), cn);
    cmd.Parameters.Add("@FileName", SqlDbType.VarChar).Value = myfilename;
    int FileId = (int)cmd.ExecuteScalar();

    cmd2 = new SqlCommand(sql2.ToString(), cn);
    cmd2.Parameters.Add("@Html", SqlDbType.VarChar).Value = mydiv;
    cmd2.Parameters.Add("@JsCode", SqlDbType.VarChar).Value = DBNull.Value;
    cmd2.Parameters.Add("@Id_Img", SqlDbType.Int).Value = FileId;
    cmd2.ExecuteNonQuery();
 cn.Close();
 }
4

1 回答 1

1

我认为您可以改用ExecuteScalar()如下方式从服务器ExecuteNonQuery()获取Scope_identity()值并将该 FileId 添加到第二个查询中。

using (SqlConnection cn = new SqlConnection("your_connection_string"))
{
    string sql1 = "insert into Image(FileName) values (@FileName); " +
                  "SELECT CAST(scope_identity() AS int)"; 

    string sql2 = "insert into Code(Html,JsCode,Id_Img) values (@Html, @JsCode, @Id_Img)";  

    int FileId = 0;

    using (SqlCommand cmd = new SqlCommand(sql1,cn))
    {
         cmd.Parameters.AddWithValue("@fileName", myfilename);
         cn.Open();
         FileId= (int)cmd.ExecuteScalar();
    }

}
于 2013-09-06T13:58:13.147 回答