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
}
}
注意:上面的代码初学者可以拿来学学,但在做项目中不要用它,因为大多访问数据库方法没有及时销废相关对象,导致如下问题出现:http://www.cnblogs.com/qiantuwuliang/archive/2009/05/31/1492959.html,建议使用微软发布的SqlHelper.cs类,(在Petshop 当中可找到它)!!!