ADO.Net中通过HashTable对SqlParameter赋值的三种方法和返回DataTable的两种方式
来源:互联网 发布:软件qa面试题 编辑:程序博客网 时间:2024/05/22 03:28
一、得到数据库连接
/// <summary>
/// 得到数据连接
/// </summary>
/// <returns>返回连接字符串</returns>
private string getConnectionString()
{
string strConn = ConfigurationSettings.AppSettings["ConnectionString"].ToString();
return strConn;
}
二、执行操作
/// <summary>
/// 执行sqlCommand
/// </summary>
/// <param name="sqlCommand">待执行的sql语句或存储过程名</param>
/// <param name="htParameters">参数集</param>
/// <returns>数据集</returns>
public DataTable ExecuteSqlCommand(string sqlCommand,Hashtable htParameters)
{
string strConn = this.getConnectionString();
SqlConnection sqlConn = new SqlConnection(strConn);
SqlTransaction sqlTran = sqlConn.BeginTransaction();
DataTable dtReturn = new DataTable();
try
{
if (sqlConn.State == ConnectionState.Closed)
{
sqlConn.Open();
}
SqlCommand sqlCom = sqlConn.CreateCommand();
sqlCom.CommandType = CommandType.Text;
sqlCom.CommandText = sqlCommand;
/*
//当sqlCommand为存储过程名时,应为如下所示
sqlCom.CommandType = CommandType.StoredProcedure;
sqlCom.CommandText = sqlCommand;
*/
/*
//以下为通过Hashtable对sqlcommand赋参的三种方法
*/
//
//
//方法一、通过IDictionaryEnumerator接口赋值
//
IDictionaryEnumerator iDictionary = htParameters.GetEnumerator();
while (iDictionary.MoveNext())
{
object objKey = iDictionary.Key;
sqlCom.Parameters.Add(objKey.ToString());
sqlCom.Parameters[objKey.ToString()].Value = iDictionary.Value;
}
//
//方法二、通过OBJECT赋值
//
foreach (object objKeys in htParameters.Keys)
{
sqlCom.Parameters.Add(objKeys);
sqlCom.Parameters[objKeys.ToString()].Value = htParameters[objKeys];
}
//
//方法三、通过DictionaryEntry赋值
//
foreach (DictionaryEntry dEntry in htParameters)
{
sqlCom.Parameters.Add(dEntry.Key);
sqlCom.Parameters[dEntry.Key.ToString()].Value = dEntry.Value;
}
/*
//以下为返回结果数据集以DataTable返回的两种方法
//
//DataReader数据不在内存中缓存,适合于检索大量数据
//
*/
//
//方法一、以SqlDataReader的形式返回DataTable数据集
//
SqlDataReader sqlReader = sqlCom.ExecuteReader();
if (sqlReader.HasRows)
{
dtReturn = sqlReader.GetSchemaTable();
}
//
//方法二、以DataSet的形式返回DataTable数据集
//
SqlDataAdapter sqlData = new SqlDataAdapter(sqlCom);
DataSet dtSet = new DataSet();
sqlData.Fill(dtSet);
dtReturn = dtSet.Tables[0];
}
catch (Exception ce)
{
sqlTran.Rollback();
throw new ApplicationException(ce.Message.ToString());
}
finally
{
sqlTran.Commit();
if (sqlConn.State == ConnectionState.Open)
{
sqlConn.Close();
}
}
return dtReturn;
}
/// <summary>
/// 得到数据连接
/// </summary>
/// <returns>返回连接字符串</returns>
private string getConnectionString()
{
string strConn = ConfigurationSettings.AppSettings["ConnectionString"].ToString();
return strConn;
}
二、执行操作
/// <summary>
/// 执行sqlCommand
/// </summary>
/// <param name="sqlCommand">待执行的sql语句或存储过程名</param>
/// <param name="htParameters">参数集</param>
/// <returns>数据集</returns>
public DataTable ExecuteSqlCommand(string sqlCommand,Hashtable htParameters)
{
string strConn = this.getConnectionString();
SqlConnection sqlConn = new SqlConnection(strConn);
SqlTransaction sqlTran = sqlConn.BeginTransaction();
DataTable dtReturn = new DataTable();
try
{
if (sqlConn.State == ConnectionState.Closed)
{
sqlConn.Open();
}
SqlCommand sqlCom = sqlConn.CreateCommand();
sqlCom.CommandType = CommandType.Text;
sqlCom.CommandText = sqlCommand;
/*
//当sqlCommand为存储过程名时,应为如下所示
sqlCom.CommandType = CommandType.StoredProcedure;
sqlCom.CommandText = sqlCommand;
*/
/*
//以下为通过Hashtable对sqlcommand赋参的三种方法
*/
//
//
//方法一、通过IDictionaryEnumerator接口赋值
//
IDictionaryEnumerator iDictionary = htParameters.GetEnumerator();
while (iDictionary.MoveNext())
{
object objKey = iDictionary.Key;
sqlCom.Parameters.Add(objKey.ToString());
sqlCom.Parameters[objKey.ToString()].Value = iDictionary.Value;
}
//
//方法二、通过OBJECT赋值
//
foreach (object objKeys in htParameters.Keys)
{
sqlCom.Parameters.Add(objKeys);
sqlCom.Parameters[objKeys.ToString()].Value = htParameters[objKeys];
}
//
//方法三、通过DictionaryEntry赋值
//
foreach (DictionaryEntry dEntry in htParameters)
{
sqlCom.Parameters.Add(dEntry.Key);
sqlCom.Parameters[dEntry.Key.ToString()].Value = dEntry.Value;
}
/*
//以下为返回结果数据集以DataTable返回的两种方法
//
//DataReader数据不在内存中缓存,适合于检索大量数据
//
*/
//
//方法一、以SqlDataReader的形式返回DataTable数据集
//
SqlDataReader sqlReader = sqlCom.ExecuteReader();
if (sqlReader.HasRows)
{
dtReturn = sqlReader.GetSchemaTable();
}
//
//方法二、以DataSet的形式返回DataTable数据集
//
SqlDataAdapter sqlData = new SqlDataAdapter(sqlCom);
DataSet dtSet = new DataSet();
sqlData.Fill(dtSet);
dtReturn = dtSet.Tables[0];
}
catch (Exception ce)
{
sqlTran.Rollback();
throw new ApplicationException(ce.Message.ToString());
}
finally
{
sqlTran.Commit();
if (sqlConn.State == ConnectionState.Open)
{
sqlConn.Close();
}
}
return dtReturn;
}
- ADO.Net中通过HashTable对SqlParameter赋值的三种方法和返回DataTable的两种方式
- ADO.NET 中DataTable中加载数据又两种方法
- ADO.NET 中DataTable中加载数据又两种方法
- ADO.NET中DataSet、DataTable、DataRow的数据复制方法
- ADO.NET中DataSet、DataTable、DataRow的数据复制方法
- ADO.NET中DataSet、DataTable、DataRow的数据复制方法
- ADO.NET中DataSet、DataTable、DataRow的数据复制方法
- ADO.NET中DataSet、DataTable、DataRow的数据复制方法
- ado.net两种连接数据库的方式
- 关于ADO.NET下数据的两种访问方式
- 初识ADO.net-访问数据的两种方式
- ADO.NET 从DataTable中获取某列含有的不重复值的几种方式
- VB通过ADO连接SQL数据的两种方法
- 在Silverlight中读取ADO.NET数据服务的两种方式
- nsis中常用的对$INSTDIR赋值的两种方法
- C++ 指针的两种操作,通过指针赋值 & 对指针赋值
- struts2下通过ajax返回json的两种方式
- java中数组的两种赋值方式
- 中国惠普前总裁孙振耀谈人生
- QT4.3.3+VC6.0安装编译过程详解
- Exception is thrown but exception.getMessage() is null
- C++ Builder 快捷键
- MFC程序员的WTL指南之包容ActiveX
- ADO.Net中通过HashTable对SqlParameter赋值的三种方法和返回DataTable的两种方式
- asp.net 中上传并读取Excel文件(OLEDB方式)
- 7种js分页效果
- 条件指示符#ifdef
- 推荐两篇文章
- GDB调试精粹及使用实例
- debug与release区别和使用的常见错误
- Function overloading in C++
- c语言中static 用法总结