读书人

如何用HashTable构造多SQL语句

发布时间: 2012-03-26 15:46:56 作者: rapoo

怎么用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);

用事务好处在于出错可以回滚,特别在于一次操作多张表时

读书人网 >asp.net

热点推荐