www.pudn.com > MyDM1.rar > Database.cs
using System;
using System.ComponentModel;
using System.Collections;
using System.Diagnostics;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
namespace MyDM1
{
///
/// Database 的摘要说明。
///
public class Database : IDisposable
{
public Database(){}
private SqlConnection con;
private void Open()
{if (con == null)
{con = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);}
if(con.State ==System.Data.ConnectionState.Closed) con.Open();
}
public void Close()
{if (con != null)con.Close();}
public void Dispose()
{
if (con != null) {con.Dispose(); con = null; }
}
private SqlCommand CreateCommand(string procName, SqlParameter[] prams)
{
Open();
SqlCommand cmd = new SqlCommand(procName, con);
cmd.CommandType = CommandType.StoredProcedure;
// 依次把参数传入存储过程
if (prams != null)
{
foreach (SqlParameter parameter in prams)
cmd.Parameters.Add(parameter);
}
// 加入返回参数
cmd.Parameters.Add(
new SqlParameter("ReturnValue", SqlDbType.Int, 4,
ParameterDirection.ReturnValue, false, 0, 0,
string.Empty, DataRowVersion.Default, null));
return cmd;
}
public void RunProc(string procName, out SqlDataReader dataReader)
{
SqlCommand cmd = CreateCommand(procName, null);
dataReader = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
}
#region 将DataReader 转为 DataTable
///
/// 将DataReader 转为 DataTable
///
/// DataReader
public DataTable ConvertDataReaderToDataTable(SqlDataReader dataReader)
{
DataSet ds=new DataSet();
DataTable datatable = new DataTable();
DataTable schemaTable = dataReader.GetSchemaTable();
//动态添加列
try
{
foreach(DataRow myRow in schemaTable.Rows)
{
DataColumn myDataColumn = new DataColumn();
myDataColumn.DataType = myRow.GetType();
myDataColumn.ColumnName = myRow[0].ToString();
datatable.Columns.Add(myDataColumn);
}
//添加数据
while(dataReader.Read())
{
DataRow myDataRow = datatable.NewRow();
for(int i=0;i