using
System;
using System.Collections.Generic;
using System.Text;
// **********************************************************************************************
// 需新添加的命名空间如下:
// **********************************************************************************************
using System.Data;
using System.Configuration;
using System.Data.SqlClient;
using System.Windows.Forms;
namespace ClassLibrary1
{
public class SqlDataBase
{
private SqlConnection conn; // 创建数据连接器;
private SqlDataAdapter sda; // 创建数据适配器;
private SqlDataReader sdr; // 创建数据读取器;
public SqlCommand SqlCmd; // 创建Sql命令;
private DataSet ds; // 创建数据集;
private DataView dv; // 创建数据视图;
public SqlDataBase()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
// **********************************************************************************************
// 打开数据库连接
// **********************************************************************************************
public void MyOpen()
{
try
{
conn = new SqlConnection(ConfigurationManager.ConnectionStrings[ " ConnStr " ].ConnectionString);
// conn = new SqlConnection(@"data Source=F14BC4C8DAE9418\SQLEXPRESS;database=recipeDB;security=true;");
conn.Open();
}
catch (SqlException e)
{
MessageBox.Show(e.Errors[ 0 ].Message.ToString());
}
}
// **********************************************************************************************
// 关闭数据库连接并释放资源
// **********************************************************************************************
public void MyClose()
{
if (conn != null )
{
conn.Close();
conn.Dispose();
}
}
// **********************************************************************************************
// 返回数据集
// **********************************************************************************************
public DataSet GetDs( string SqlString)
{
try
{
MyOpen();
sda = new SqlDataAdapter(SqlString, conn);
ds = new DataSet();
sda.Fill(ds);
MyClose();
return ds;
}
catch (SqlException e)
{
MessageBox.Show(e.Errors[ 0 ].Message.ToString());
return null ;
}
}
// **********************************************************************************************
// 返回数据视图
// **********************************************************************************************
public DataView GetDv( string SqlString)
{
ds = GetDs(SqlString);
dv = ds.Tables[ 0 ].DefaultView;
return dv;
}
// **********************************************************************************************
// 创建数据视图
// **********************************************************************************************
public DataView CreateView( string strSql, int sRecord, int mRecord)
{
MyOpen();
sda = new SqlDataAdapter(strSql, conn);
ds = new DataSet();
sda.Fill(ds, sRecord, mRecord, " temptbl " );
DataView dv = ds.Tables[ " temptbl " ].DefaultView;
conn.Close();
conn.Dispose();
return dv;
}
// **********************************************************************************************
// 获取数据表
// **********************************************************************************************
public DataTable GetDt( string SqlString)
{
return GetDs(SqlString).Tables[ 0 ];
}
// ***********************************************************************************************
// 返回数据读取器,执行完后关闭连接(使用该方法切记要手工关闭SqlDataReader和连接)
// ***********************************************************************************************
public SqlDataReader GetDr( string SqlString)
{
MyOpen();
SqlCmd = new SqlCommand(SqlString, conn);
try
{
sdr = SqlCmd.ExecuteReader();
return sdr;
}
catch (System.Data.SqlClient.SqlException e)
{
throw new Exception(e.Message);
}
finally // 不能在此关闭,否则,返回的对象将无法使用
{
// 在这关闭 SqlDataReader对象.eg.
// dr.Close();
// SqlCmd.Dispose();
// MyClose();
}
}
// **********************************************************************************************
// 执行无需返回的Sql语句
// **********************************************************************************************
public bool RunSql( string SqlString)
{
try
{
MyOpen();
SqlCmd = new SqlCommand(SqlString, conn);
if (SqlCmd.ExecuteNonQuery() > 0 )
{
MyClose();
return true ;
}
else
{
MyClose();
return false ;
}
}
catch { return false ; }
}
public void ExecuteSql( string sqlstr)
{
try
{
MyOpen();
SqlCmd = new SqlCommand(sqlstr, conn);
SqlCmd.ExecuteNonQuery();
}
catch (Exception e)
{
throw new Exception(e.Message);
}
finally
{
MyClose();
}
}
// ************************************************************************************************
// 返回Sql语句的第一行第一列,否则返回空
// ************************************************************************************************
public string RunSqlReturn( string SqlSrting)
{
string returnString = "" ;
MyOpen();
SqlCmd = new SqlCommand(SqlSrting, conn);
try
{
returnString = SqlCmd.ExecuteScalar().ToString();
return returnString;
}
catch
{
return returnString;
}
finally
{
MyClose();
}
}
// **********************************************************************************************
// 返回一个数据行
// **********************************************************************************************
public DataRow GetDataRow( string SqlString)
{
DataSet dataset = GetDs(SqlString);
dataset.CaseSensitive = false ;
if (dataset.Tables[ 0 ].Rows.Count > 0 )
{
return dataset.Tables[ 0 ].Rows[ 0 ];
}
else
{
return null ;
}
}
// **********************************************************************************************
// 返回object对象
// **********************************************************************************************
public object ExceScalar( string SqlString)
{
try
{
MyOpen();
SqlCmd = new SqlCommand(SqlString, conn);
object val = SqlCmd.ExecuteScalar();
SqlCmd.Parameters.Clear();
MyClose();
return val;
}
catch
{
return null ;
}
}
#region ExeSqlFillTab(string sqlStr, ref DataSet TargetDataSet)执行sql,并将返回信息填充到到TargetDataSet中,执行成功返回true,否则为false
/// <summary>
///
/// 执行sql,并将返回信息填充到到TargetDataSet中的tableName中,执行成功返回true,否则为false
/// </summary>
public bool ExeSqlFillTab( string SqlString, ref DataSet TargetDataSet)
{
try
{
MyOpen();
SqlCmd = new SqlCommand(SqlString, conn);
SqlCmd.CommandType = CommandType.Text;
sda = new SqlDataAdapter(SqlString, conn);
sda.Fill(TargetDataSet);
MyClose();
return true ;
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
// TLog.WriteLog("ExeSqlFillTab Error:"+ex.Message+" sql:"+sqlStr);
return false ;
}
finally
{
MyClose();
if (SqlCmd != null )
SqlCmd.Dispose();
}
}
#endregion
}
}
using System.Collections.Generic;
using System.Text;
// **********************************************************************************************
// 需新添加的命名空间如下:
// **********************************************************************************************
using System.Data;
using System.Configuration;
using System.Data.SqlClient;
using System.Windows.Forms;
namespace ClassLibrary1
{
public class SqlDataBase
{
private SqlConnection conn; // 创建数据连接器;
private SqlDataAdapter sda; // 创建数据适配器;
private SqlDataReader sdr; // 创建数据读取器;
public SqlCommand SqlCmd; // 创建Sql命令;
private DataSet ds; // 创建数据集;
private DataView dv; // 创建数据视图;
public SqlDataBase()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
// **********************************************************************************************
// 打开数据库连接
// **********************************************************************************************
public void MyOpen()
{
try
{
conn = new SqlConnection(ConfigurationManager.ConnectionStrings[ " ConnStr " ].ConnectionString);
// conn = new SqlConnection(@"data Source=F14BC4C8DAE9418\SQLEXPRESS;database=recipeDB;security=true;");
conn.Open();
}
catch (SqlException e)
{
MessageBox.Show(e.Errors[ 0 ].Message.ToString());
}
}
// **********************************************************************************************
// 关闭数据库连接并释放资源
// **********************************************************************************************
public void MyClose()
{
if (conn != null )
{
conn.Close();
conn.Dispose();
}
}
// **********************************************************************************************
// 返回数据集
// **********************************************************************************************
public DataSet GetDs( string SqlString)
{
try
{
MyOpen();
sda = new SqlDataAdapter(SqlString, conn);
ds = new DataSet();
sda.Fill(ds);
MyClose();
return ds;
}
catch (SqlException e)
{
MessageBox.Show(e.Errors[ 0 ].Message.ToString());
return null ;
}
}
// **********************************************************************************************
// 返回数据视图
// **********************************************************************************************
public DataView GetDv( string SqlString)
{
ds = GetDs(SqlString);
dv = ds.Tables[ 0 ].DefaultView;
return dv;
}
// **********************************************************************************************
// 创建数据视图
// **********************************************************************************************
public DataView CreateView( string strSql, int sRecord, int mRecord)
{
MyOpen();
sda = new SqlDataAdapter(strSql, conn);
ds = new DataSet();
sda.Fill(ds, sRecord, mRecord, " temptbl " );
DataView dv = ds.Tables[ " temptbl " ].DefaultView;
conn.Close();
conn.Dispose();
return dv;
}
// **********************************************************************************************
// 获取数据表
// **********************************************************************************************
public DataTable GetDt( string SqlString)
{
return GetDs(SqlString).Tables[ 0 ];
}
// ***********************************************************************************************
// 返回数据读取器,执行完后关闭连接(使用该方法切记要手工关闭SqlDataReader和连接)
// ***********************************************************************************************
public SqlDataReader GetDr( string SqlString)
{
MyOpen();
SqlCmd = new SqlCommand(SqlString, conn);
try
{
sdr = SqlCmd.ExecuteReader();
return sdr;
}
catch (System.Data.SqlClient.SqlException e)
{
throw new Exception(e.Message);
}
finally // 不能在此关闭,否则,返回的对象将无法使用
{
// 在这关闭 SqlDataReader对象.eg.
// dr.Close();
// SqlCmd.Dispose();
// MyClose();
}
}
// **********************************************************************************************
// 执行无需返回的Sql语句
// **********************************************************************************************
public bool RunSql( string SqlString)
{
try
{
MyOpen();
SqlCmd = new SqlCommand(SqlString, conn);
if (SqlCmd.ExecuteNonQuery() > 0 )
{
MyClose();
return true ;
}
else
{
MyClose();
return false ;
}
}
catch { return false ; }
}
public void ExecuteSql( string sqlstr)
{
try
{
MyOpen();
SqlCmd = new SqlCommand(sqlstr, conn);
SqlCmd.ExecuteNonQuery();
}
catch (Exception e)
{
throw new Exception(e.Message);
}
finally
{
MyClose();
}
}
// ************************************************************************************************
// 返回Sql语句的第一行第一列,否则返回空
// ************************************************************************************************
public string RunSqlReturn( string SqlSrting)
{
string returnString = "" ;
MyOpen();
SqlCmd = new SqlCommand(SqlSrting, conn);
try
{
returnString = SqlCmd.ExecuteScalar().ToString();
return returnString;
}
catch
{
return returnString;
}
finally
{
MyClose();
}
}
// **********************************************************************************************
// 返回一个数据行
// **********************************************************************************************
public DataRow GetDataRow( string SqlString)
{
DataSet dataset = GetDs(SqlString);
dataset.CaseSensitive = false ;
if (dataset.Tables[ 0 ].Rows.Count > 0 )
{
return dataset.Tables[ 0 ].Rows[ 0 ];
}
else
{
return null ;
}
}
// **********************************************************************************************
// 返回object对象
// **********************************************************************************************
public object ExceScalar( string SqlString)
{
try
{
MyOpen();
SqlCmd = new SqlCommand(SqlString, conn);
object val = SqlCmd.ExecuteScalar();
SqlCmd.Parameters.Clear();
MyClose();
return val;
}
catch
{
return null ;
}
}
#region ExeSqlFillTab(string sqlStr, ref DataSet TargetDataSet)执行sql,并将返回信息填充到到TargetDataSet中,执行成功返回true,否则为false
/// <summary>
///
/// 执行sql,并将返回信息填充到到TargetDataSet中的tableName中,执行成功返回true,否则为false
/// </summary>
public bool ExeSqlFillTab( string SqlString, ref DataSet TargetDataSet)
{
try
{
MyOpen();
SqlCmd = new SqlCommand(SqlString, conn);
SqlCmd.CommandType = CommandType.Text;
sda = new SqlDataAdapter(SqlString, conn);
sda.Fill(TargetDataSet);
MyClose();
return true ;
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
// TLog.WriteLog("ExeSqlFillTab Error:"+ex.Message+" sql:"+sqlStr);
return false ;
}
finally
{
MyClose();
if (SqlCmd != null )
SqlCmd.Dispose();
}
}
#endregion
}
}
注意:上面的代码初学者可以拿来学学,但在做项目中不要用它,因为大多访问数据库方法没有及时销废相关对象,导致如下问题出现:http://www.cnblogs.com/qiantuwuliang/archive/2009/05/31/1492959.html,建议使用微软发布的SqlHelper.cs类,(在Petshop 当中可找到它)!!!