下面是一个调用Hashtable通过事务来执行多条SQL语句一个方法.
/// <summary>
/// 执行多条SQL语句,实现数据库事务。
/// </summary>
/// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的SqlParameter[])</param>
public void ExecuteSqlTran(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();
}
conn.Close();
}
catch
{
conn.Close();
trans.Rollback();
throw;
}
}
}
}我现在有这样二个SQL语句如下,我不知道怎么引用。
string strsql1 = "Insert into A(Rkey,Code,Name) Values('1','Cohen',@Name)";
string strsql2 = "Update A Set Code = @Code Where Rkey = '1'";这样引用提示有错误,请问错误在那里。到底怎么引用,请高人指点.小人先谢了!
private void btnHash_Click(object sender, System.EventArgs e)//引用dbhelp类的ExecuteSqlTran的事件。
{
string strsql1 = "Insert into A(Rkey,Code,Name) Values('1','Cohen',@Name)";
string strsql2 = "Update A Set Code = @Code Where Rkey = '1'";
Hashtable ht = new Hashtable();
ht.Add(strsql1,"Backham");
ht.Add(strsql2,"Owen");
dbhelp.ExecuteSqlTran(ht); //dbhelp类实化,ExecuteSqlTran是类dbhelp一种方法.
}
/// <summary>
/// 执行多条SQL语句,实现数据库事务。
/// </summary>
/// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的SqlParameter[])</param>
public void ExecuteSqlTran(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();
}
conn.Close();
}
catch
{
conn.Close();
trans.Rollback();
throw;
}
}
}
}我现在有这样二个SQL语句如下,我不知道怎么引用。
string strsql1 = "Insert into A(Rkey,Code,Name) Values('1','Cohen',@Name)";
string strsql2 = "Update A Set Code = @Code Where Rkey = '1'";这样引用提示有错误,请问错误在那里。到底怎么引用,请高人指点.小人先谢了!
private void btnHash_Click(object sender, System.EventArgs e)//引用dbhelp类的ExecuteSqlTran的事件。
{
string strsql1 = "Insert into A(Rkey,Code,Name) Values('1','Cohen',@Name)";
string strsql2 = "Update A Set Code = @Code Where Rkey = '1'";
Hashtable ht = new Hashtable();
ht.Add(strsql1,"Backham");
ht.Add(strsql2,"Owen");
dbhelp.ExecuteSqlTran(ht); //dbhelp类实化,ExecuteSqlTran是类dbhelp一种方法.
}
解决方案 »
- 添加数据问题,提示语法错误,帮我看看
- 怎样使用C#正则表达式替换所有符合条件的字符串
- 菜鸟问题:有关NetCms系统的使用!
- 如何做好友在线检测?
- 求教:判断内容是否是时间: DateTime.Parse(myds.Tables[0].Rows[p][0].ToString()+"1111")=="1900"
- 求一条SQL语句~~~~~~~
- vssky请教:关于传递参数问题,请教大位们。
- 从数据库中读用户EMAIL发邮件出现连接超时问题
- 二次开发是什么意思?
- 有关动态绑定DataGrid
- 我有一定的c#语言基础,我现在要开发一个GIS系统,请高手给点入门思路!
- 服务器按钮 调用 一段 JS函数 没反应,帮看看是怎么回事??
array arr;
arr[0] = strsql1;
arr[1] = parameter;hashTable.add("key", arr);
ht.Add(strsql1, "Backham ");
ht.Add(strsql2, "Owen ");
dbhelp.ExecuteSqlTran(ht); //dbhelp类实化,ExecuteSqlTran是类dbhelp一种方法.
----------------------------------
ExecuteSqlTran(ht)中的ht的key保存的是SQL语句或者存储过程名称,value里保存的是SQL参数
所以 ht.Add(strsql1, "Backham ");应该是一个SqlParameter[]集合;你需要先创建该集合
SqlParameter p = new SqlParameter("@Name",SqlDbType.NvarChar,50);
p.Value = "Backham";
SqlParameter[] sps=new SqlParamerer[0]{
p
}
ht.Add(strsql1, sps);