数据库操作类的封装是任何工程都必不可少地,本例当然也不例外。Sql类主要包括两类方法:一类用来直接执行SQL语句,另一类用来执行存储过程。
其中的数据库连接字符串的数据库路径采用了绝对路径,读者调试程序时应当做相应的更改。Sql类的具体代码如下:
using System;
using System.Collections.Generic;
using System.Text;
using System.Data.SqlClient;
using System.Data;
namespace MyChat
{
//数据库操作类
public class Sql
{
private string str = null; //数据库连接字符串
public SqlConnection Con; //sql数据连接组件实例化
public SqlCommand command = new SqlCommand(); //初始化一个SQL命令对象
public Sql() //类初始化,初始化数据连接
{
string path = @"C:\Documents and Settings\Administrator\桌面\tools\
mychat1.0\Chat";
//数据库连接字符串
str="Data Source=.\\SQLEXPRESS;AttachDbFilename=\"" + path + "\\app_data\\chat.mdf\";
Integrated Security=True;User Instance=True";
Con = new SqlConnection(str);
}
#region SQL语句操作
// 执行只读数据信息的提取,返回一个datareader
public SqlDataReader GetReader(string search)
{
SqlDataReader Reader;
if(Con.State != ConnectionState.Open)
Con.Open(); //打开数据库连接
SqlCommand Com = new SqlCommand(search, Con);
Reader = Com.ExecuteReader(); //执行SQL语句
return Reader; //返回一个reader
}
// 输入查询字符串,返回dataset
public DataSet getMyDataSet(string sql)
{
command.Connection = Con; //配置command对象
command.CommandText = sql; //赋予要执行的语句
DataSet dt = new DataSet(); //初始化一个数据返回集合
SqlDataAdapter da = new SqlDataAdapter(command);
Con.Open(); //打开连接
da.Fill(dt); //执行语句
command.Connection.Close(); //关闭连接
return dt;
}
// 执行非查询SQL语句
public void ExecuteSql(string sql)
{
if(Con.State != ConnectionState.Open)
Con.Open(); //如果数据连接关闭,则打开
SqlCommand Com = new SqlCommand(sql, Con);
Com.ExecuteNonQuery(); //执行非查询SQL语句
Con.Close();
}
// 执行非查询数据库操作,是否关闭数据库连接 可以选择
public void ExecuteSql(string sql, bool closeConnection)
{
if(Con.State != ConnectionState.Open)
Con.Open(); //如果未打开连接,则打开
SqlCommand Com = new SqlCommand(sql, Con);
Com.ExecuteNonQuery();
if (closeConnection) Con.Close(); //如果需要关闭,则关闭连接
}
#endregion
#region 执行存储过程的代码
//输入存储过程名称,执行查询存储过程
public DataSet getDataSet(string produreName)
{
command.Connection = Con; //赋予连接对象
//执行的类型为存储过程
command.CommandType = CommandType.StoredProcedure ;
command.CommandText = produreName; //赋予执行的存储过程名字
DataSet dt = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(command);
Con.Open(); //打开连接
da.Fill(dt); //填充数据
command.Connection.Close();
return dt; //返回数据集
}
//输入存储过程名,执行非查询存储过程
public bool exec(string produreName)
{
bool flag = false; //任务是否正确执行,初始化为false
command.Connection = Con; //赋予command对象以数据连接
command.CommandType = CommandType.StoredProcedure;
command.CommandText = produreName; //存储过程名称
try
{
command.ExecuteNonQuery(); //执行存储过程
flag = true; //正确完成任务
}
finally
{
command.Connection.Close(); //关闭连接
}
return flag; //返回成功与否的标志
}
#endregion
}
}
其中的数据库连接字符串的数据库路径采用了绝对路径,读者调试程序时应当做相应的更改。Sql类的具体代码如下:
using System;
using System.Collections.Generic;
using System.Text;
using System.Data.SqlClient;
using System.Data;
namespace MyChat
{
//数据库操作类
public class Sql
{
private string str = null; //数据库连接字符串
public SqlConnection Con; //sql数据连接组件实例化
public SqlCommand command = new SqlCommand(); //初始化一个SQL命令对象
public Sql() //类初始化,初始化数据连接
{
string path = @"C:\Documents and Settings\Administrator\桌面\tools\
mychat1.0\Chat";
//数据库连接字符串
str="Data Source=.\\SQLEXPRESS;AttachDbFilename=\"" + path + "\\app_data\\chat.mdf\";
Integrated Security=True;User Instance=True";
Con = new SqlConnection(str);
}
#region SQL语句操作
// 执行只读数据信息的提取,返回一个datareader
public SqlDataReader GetReader(string search)
{
SqlDataReader Reader;
if(Con.State != ConnectionState.Open)
Con.Open(); //打开数据库连接
SqlCommand Com = new SqlCommand(search, Con);
Reader = Com.ExecuteReader(); //执行SQL语句
return Reader; //返回一个reader
}
// 输入查询字符串,返回dataset
public DataSet getMyDataSet(string sql)
{
command.Connection = Con; //配置command对象
command.CommandText = sql; //赋予要执行的语句
DataSet dt = new DataSet(); //初始化一个数据返回集合
SqlDataAdapter da = new SqlDataAdapter(command);
Con.Open(); //打开连接
da.Fill(dt); //执行语句
command.Connection.Close(); //关闭连接
return dt;
}
// 执行非查询SQL语句
public void ExecuteSql(string sql)
{
if(Con.State != ConnectionState.Open)
Con.Open(); //如果数据连接关闭,则打开
SqlCommand Com = new SqlCommand(sql, Con);
Com.ExecuteNonQuery(); //执行非查询SQL语句
Con.Close();
}
// 执行非查询数据库操作,是否关闭数据库连接 可以选择
public void ExecuteSql(string sql, bool closeConnection)
{
if(Con.State != ConnectionState.Open)
Con.Open(); //如果未打开连接,则打开
SqlCommand Com = new SqlCommand(sql, Con);
Com.ExecuteNonQuery();
if (closeConnection) Con.Close(); //如果需要关闭,则关闭连接
}
#endregion
#region 执行存储过程的代码
//输入存储过程名称,执行查询存储过程
public DataSet getDataSet(string produreName)
{
command.Connection = Con; //赋予连接对象
//执行的类型为存储过程
command.CommandType = CommandType.StoredProcedure ;
command.CommandText = produreName; //赋予执行的存储过程名字
DataSet dt = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(command);
Con.Open(); //打开连接
da.Fill(dt); //填充数据
command.Connection.Close();
return dt; //返回数据集
}
//输入存储过程名,执行非查询存储过程
public bool exec(string produreName)
{
bool flag = false; //任务是否正确执行,初始化为false
command.Connection = Con; //赋予command对象以数据连接
command.CommandType = CommandType.StoredProcedure;
command.CommandText = produreName; //存储过程名称
try
{
command.ExecuteNonQuery(); //执行存储过程
flag = true; //正确完成任务
}
finally
{
command.Connection.Close(); //关闭连接
}
return flag; //返回成功与否的标志
}
#endregion
}
}