我在mvc中工作并使用sql命令将数据插入到我的 数据库中。
我尝试做的是插入2个表中的哪一个 从另一方获得外键。
如何构建我的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();
}
答案 0 :(得分: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();
}
}