有三张表,写一条SQL语句插入这三张表里面数据 三张表,一个sql,你怎么也完不成一个insert到三个表吧,要么你写三个sql,要么写个存储过程 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 就是不能用存储过程了,我听着别人说主表用实体类,其它的两张表用Hash把两张从表的传过去,但是听的云里雾里的 先插入主表,立即查询出来 插入主表的主键,如果主键是GUID 就不需要查了,C#代码就可以得到, 如果主键用的自增 用 SELECT @@IDENTITY,查询,后面2个插入语句都是基于这个主键ID的插入语句,注意事务处理,基本思路就是这样吧 那你改成 用程序来实现咯 依次执行3条SQL。 - - 一条sql语句 无法完成你的要求- - 要么用代码第一条写入 读出id 然后根据id去插入后面的要么存储过程。 类似于第一种 只是你只用调用一下就可以了。在一种就看你的表 是不是每次都需要 如果是的话 用触发器也可以。 我自己写的不知道这样写可以不StringBuilder strSql = new StringBuilder(); //定义策略ID strSql.Append("declare @npsid int;"); //插入策略表 strSql.Append("insert into ME_NewProductStrategy values('" + model.nps_title + "','" + model.nps_cost + "','" + model.product_id + "','" + model.nps_model + "','" + model.nps_pack + "','" + model.nps_cost_basic + "','" + model.nps_cost_attribute + "','" + model.nps_cost_pack + "','" + model.nps_cost_materials + "','" + model.nps_cost + "','" + model.nps_index + "','" + model.nps_image + "');"); //获取策略ID strSql.Append("select @npsid=@@IDENTITY;select @npsid;"); //添加原材料组成表 strSql.Append("insert into ME_NewProductStrategy_Materials values(@pa_id,'"+ mamodel.materials_id + "','" + mamodel.materials_name + "'"); //添加新产品属性表 strSql.Append("insert into ME_NewProductStrategy_Attribute values(@pa_id,'" + attmodel.attr_id+ "','" + attmodel.attr_name + "'"); 一定要写一个sql语句也可以,用触发器 在执行这些SQL 记得使用事务。 在执行这些SQL 记得使用事务。 楼主第一张表的ID是自动生成的还是插入的啊?如果是插入的你可以试试下面的: public bool Test_Add(int id,'','') { string str = "insert into table1 values(ID,'','')"; cmd = SqlHelper.CreateDbCommand(str, conn); cmd.Parameters.AddRange(parm); conn.Open(); int result = cmd.ExecuteNonQuery(); return (result > 0) ? true : false; } catch (Exception ex) { throw ex; } finally { conn.Close(); } }if(Test_Add){ string str = "insert into table2 values(,ID,)"; cmd = SqlHelper.CreateDbCommand(str, conn); cmd.Parameters.AddRange(parm); conn.Open(); int result = cmd.ExecuteNonQuery(); if(result>0){string str = "insert into table3 values(,ID,)"; cmd = SqlHelper.CreateDbCommand(str, conn); cmd.Parameters.AddRange(parm); conn.Open(); int result = cmd.ExecuteNonQuery();} } 提供两种常用方法,也是最笨的方法:1,在ADO.NET中,启用事务,执行3次,3条语句;2,使用DBMS的触发器,在主键表上建议插入触发器,级联插入数据到另两外键表 post 数据流疑问? 寻找msmq绝世高人,如果在工作组模式下访问远程msmq gridview里面的文字怎么有html效果了? 求 ASPxSpinEdit 使用示例 越全面越好 用fileupload实现上传下载的问题 2年asp.net经验 想转wap开发讨论 UP有分. 页面中引用了ascx,请问如何将传值进去? 关于asp.net工作 如何将DataGrid页面加载时就处于编辑状态?? 作为一个程序员,如果再给你一次机会,你会对那个女孩说哪三个字? asp.net的timer局部刷新让页面好慢啊 ASP.NET WEB页面打印求好用的打印方法,能拖上来改改就能用的,谢谢啦
要么用代码第一条写入 读出id 然后根据id去插入后面的要么存储过程。 类似于第一种 只是你只用调用一下就可以了。在一种就看你的表 是不是每次都需要 如果是的话 用触发器也可以。
//定义策略ID
strSql.Append("declare @npsid int;");
//插入策略表
strSql.Append("insert into ME_NewProductStrategy values('" + model.nps_title + "','" + model.nps_cost + "','" + model.product_id + "','" + model.nps_model + "','"
+ model.nps_pack + "','" + model.nps_cost_basic + "','" + model.nps_cost_attribute + "','" + model.nps_cost_pack + "','" + model.nps_cost_materials + "','"
+ model.nps_cost + "','" + model.nps_index + "','" + model.nps_image + "');");
//获取策略ID
strSql.Append("select @npsid=@@IDENTITY;select @npsid;");
//添加原材料组成表
strSql.Append("insert into ME_NewProductStrategy_Materials values(@pa_id,'"+ mamodel.materials_id + "','" + mamodel.materials_name + "'");
//添加新产品属性表
strSql.Append("insert into ME_NewProductStrategy_Attribute values(@pa_id,'" + attmodel.attr_id+ "','" + attmodel.attr_name + "'");
在执行这些SQL 记得使用事务。
在执行这些SQL 记得使用事务。
public bool Test_Add(int id,'','')
{
string str = "insert into table1 values(ID,'','')";
cmd = SqlHelper.CreateDbCommand(str, conn);
cmd.Parameters.AddRange(parm);
conn.Open();
int result = cmd.ExecuteNonQuery();
return (result > 0) ? true : false;
}
catch (Exception ex)
{
throw ex;
}
finally
{
conn.Close();
}
}
if(Test_Add)
{
string str = "insert into table2 values(,ID,)";
cmd = SqlHelper.CreateDbCommand(str, conn);
cmd.Parameters.AddRange(parm);
conn.Open();
int result = cmd.ExecuteNonQuery();
if(result>0)
{
string str = "insert into table3 values(,ID,)";
cmd = SqlHelper.CreateDbCommand(str, conn);
cmd.Parameters.AddRange(parm);
conn.Open();
int result = cmd.ExecuteNonQuery();}
}