gpt4 book ai didi

mysql - SQL - MVC - 插入到 2 个表中

转载 作者:行者123 更新时间:2023-11-29 13:36:33 24 4
gpt4 key购买 nike

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

我尝试做的是插入两个表,其中一个拥有对方的外键。

如何构建 sql 查询以在插入时设置条件插入表Image,在外键列中插入id在表内容中。

 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();
}

最佳答案

我认为您可以使用 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();
}

}

关于mysql - SQL - MVC - 插入到 2 个表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18659531/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com