在C#里如何传多个datatable到SQL的存储过程里进行插入操作呢? 比如我要保存2个表,A表1个记录,B表2个记录,其中B表包含A表外键。如果按照普通的情况,需要打开三次库,依次插入。这样就造成资源浪费,并且无法使用事务对数据一致性进行保护。可不可以将table直接抛到SQL里。直接在数据库里进行分解插入呢?请高手帮忙,十分感谢。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可以是不成问题。SQL可以通过触发器实现。但是怕你这样做导致以后存储过程不好维护。C#中也有事务可以保证数据库更改的一致性,进而保证数据的完整性。你可以参照下面这段代码:再加之数据适配器完成!public static int updatePasswordFun(string LoginUserName, string OldPassword, string NewPassword) {//启动事务处理,修改密码 string dateOldPassword = MyMd5(OldPassword); string dateNewPassword = MyMd5(NewPassword); System.Data.SqlClient.SqlConnection conn = GetConn(); conn.Open(); SqlTransaction orderTrans = conn.BeginTransaction(); SqlCommand cmd = new SqlCommand("updatePassword", conn); cmd.CommandType = CommandType.StoredProcedure; cmd.Transaction = orderTrans; int result = 1; try { cmd.Parameters.Add("@LoginUserName", System.Data.SqlDbType.VarChar, 20).Value = LoginUserName; cmd.Parameters.Add("@OldUserPassword", System.Data.SqlDbType.VarChar, 100).Value = dateOldPassword; cmd.Parameters.Add("@NewUserPassword", System.Data.SqlDbType.VarChar, 100).Value = dateNewPassword; cmd.Parameters.Add("@returnvalue", System.Data.SqlDbType.Int); cmd.Parameters["@returnvalue"].Direction = ParameterDirection.ReturnValue; cmd.ExecuteNonQuery(); orderTrans.Commit(); result = Convert.ToInt32(cmd.Parameters["@returnvalue"].Value); } catch { orderTrans.Rollback(); } finally { conn.Close(); conn.Dispose(); } return result; } 谢谢朋友们的帮助。不过该问题的解决方法我是通过向sql传xml参数来解决的,我认为为了保证数据的完整性应该从数据底层来进行处理。 c# 数据库脚本创建数据库 求导出Excel表格 需要添加的引用? 关于文件下载的问题!急!!!!!!!! 文本框的问题 [高分]怎么判断一个程序是否已经安装? 请问这个问题如何解决呢?非常感谢! 使用c#模拟登陆一个jsp页面 某字段数据形式为a$b$c 菜得要哭系列2:数据库中的时间类型和dateTimePicker…… 求教:关于动态数组? 问个简单的问题 给你一个文件,名称为A.cs,你怎么提取这个文件中的所有静态变量?
但是怕你这样做导致以后存储过程不好维护。
C#中也有事务可以保证数据库更改的一致性,进而保证数据的完整性。
你可以参照下面这段代码:再加之数据适配器完成!public static int updatePasswordFun(string LoginUserName, string OldPassword, string NewPassword)
{//启动事务处理,修改密码
string dateOldPassword = MyMd5(OldPassword);
string dateNewPassword = MyMd5(NewPassword);
System.Data.SqlClient.SqlConnection conn = GetConn();
conn.Open();
SqlTransaction orderTrans = conn.BeginTransaction();
SqlCommand cmd = new SqlCommand("updatePassword", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Transaction = orderTrans;
int result = 1;
try
{
cmd.Parameters.Add("@LoginUserName", System.Data.SqlDbType.VarChar, 20).Value = LoginUserName;
cmd.Parameters.Add("@OldUserPassword", System.Data.SqlDbType.VarChar, 100).Value = dateOldPassword;
cmd.Parameters.Add("@NewUserPassword", System.Data.SqlDbType.VarChar, 100).Value = dateNewPassword;
cmd.Parameters.Add("@returnvalue", System.Data.SqlDbType.Int);
cmd.Parameters["@returnvalue"].Direction = ParameterDirection.ReturnValue;
cmd.ExecuteNonQuery();
orderTrans.Commit();
result = Convert.ToInt32(cmd.Parameters["@returnvalue"].Value);
}
catch
{
orderTrans.Rollback();
}
finally
{
conn.Close();
conn.Dispose();
}
return result;
}