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 当中可找到它)!!!