怎么用HashTable构造多SQL语句?
public static void ExecuteSqlTran(string connectionString, Hashtable SQLStringList)
{
using (SqlConnection conn = new SqlConnection(connectionString))
{
conn.Open();
using (SqlTransaction trans = conn.BeginTransaction())
{
SqlCommand cmd = new SqlCommand();
try
{
//循环
foreach (DictionaryEntry myDE in SQLStringList)
{
string cmdText = myDE.Key.ToString();
SqlParameter[] cmdParms = (SqlParameter[])myDE.Value;
PrepareCommand(cmd, conn, trans, cmdText, cmdParms);
int val = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
}
trans.Commit();
}
catch
{
trans.Rollback();
throw;
}
}
}
}
上面是一位高人写的数据访问类,指点下怎么在调用前准备好这个hashtable 谢谢
比如这里我有两条SQL语句
insert into userinfo (username,userpwd)values(@username,@userpwd)
insert into userdetail(useremail,useraddress)values(@useremail,@useraddress)
[解决办法]
我觉得直接用SqlHelper就已经很方便了,没必要把sql语句放在HashTable里来搞啊!!如果是想缓存参数,可以利用SqlHelper配套的一个类,叫:SqlHelperParameterCache 来做,lz想要的话把邮箱留下,我发给你!
[解决办法]
Hashtable SQLStringList = new Hashtable();
string connectionString = "Your ConnectionString ";
string cmdText = "insert into userinfo (username,userpwd)values(@username,@userpwd) ";
SqlParameter[] cmdParms = new SqlParameter[2];
cmdParms[0] = new SqlParameter( "@username ", "name ");
cmdParms[1] = new SqlParameter( "@userpwd ", "pwd ");
SQLStringList.Add(cmdText, cmdParms);
ExecuteSqlTran(connectionString, SQLStringList);
用事务好处在于出错可以回滚,特别在于一次操作多张表时