利用.NET2.0自带的数据库访问工厂写的数据库访问基类
using System;
using System.Collections.Generic;
using System.Text;
using System.Data.Common;
using System.Configuration;
using System.Data;
namespace DAL
{
public class Database
{
#region 字段
private const string defaultConnectionConfigKey ="default";
/// <summary>
/// 数据连接字符串
/// </summary>
private string connectionString;
/// <summary>
/// 数据库 驱动 提供者
/// </summary>
private string providerName;
/// <summary>
/// 数据库 驱动 提供者 工厂
/// </summary>
private DbProviderFactory factory;
#endregion
#region 构造函数
/// <summary>
/// 默认构造函数 注意 config文件的,数据库连接节点名称默认为"default",
/// 才调用此初始构造函数。否则调用重载构造函数。
/// </summary>
public Database():this(defaultConnectionConfigKey)
{
}
/// <summary>
/// 以config中的数据库节点名为参数构造数据库访问对象
/// </summary>
/// <param name="conConfigKey">config中的数据库节点名</param>
public Database(string conConfigKey)
{
ConnectionStringSettings settings = ConfigurationManager.ConnectionStrings[conConfigKey];//连接App.config的数据库的 连接
connectionString = settings.ConnectionString;//获得链接字符串
providerName = settings.ProviderName;//得到链接名
factory = DbProviderFactories.GetFactory(providerName);//连接到sql数据库
}
#endregion
#region 方法
#region 执行查询语句,返回一组数据——返回类型是DataTable
/// <summary>
/// 执行查询语句,返回一组数据。返回类型是DataTable。
/// 一般为Select的sql语句
/// </summary>
/// <param name="sql">执行的Sql语句</param>
/// <returns>返回数据的DataTable</returns>
public DataTable Select(string sql)
{
using (DbConnection conn = factory.CreateConnection())//连接数据库
{
try
{
conn.ConnectionString = connectionString;//得到链接的字符串
conn.Open();//打开连接
DbDataAdapter adapter = factory.CreateDataAdapter();//
adapter.SelectCommand = conn.CreateCommand();//创建连接命令
adapter.SelectCommand.CommandText = sql;//执行查询的sql命令
DataTable table = new DataTable();//定义表
adapter.Fill(table);//填充表
return table;//返回表
}
catch
{
conn.Close();//关闭连接
return null;//返回空值
}
}
}
#endregion
#region 执行 语句 返回影响的行数
/// <summary>
/// 执行sql语句,一般为更新(update),插入(insert)、删除(delete)的操作。
/// 返回的是数据库执行sql语句,影响的数据表行数。
/// </summary>
/// <param name="sql">执行的Sql语句</param>
/// <returns>返回的是数据库执行sql语句,影响的数据表行数。</returns>
public int Exec(string sql)
{
using (DbConnection conn = factory.CreateConnection())
{
try
{
DbCommand cmd = conn.CreateCommand();
cmd.CommandText = sql;
conn.ConnectionString = connectionString;
conn.Open();
int i = cmd.ExecuteNonQuery();
return i;
}
catch
{
conn.Close();
return 0;
}
}
}
#endregion
#region 执行语句返回 首行首列,返回类型是Object类型。
/// <summary>
/// 执行sql语句,返回首行首列。返回类型是Object类型。
/// </summary>
/// <param name="sql">执行的Sql语句</param>
/// <returns>返回Object类型的首行首列数据。</returns>
public Object ExecScalar(string sql)
{
using (DbConnection conn = factory.CreateConnection())
{
try
{
DbCommand cmd = conn.CreateCommand();
cmd.CommandText = sql;
conn.ConnectionString = connectionString;
conn.Open();
Object i = cmd.ExecuteScalar();
return i;
}
catch
{
conn.Close();
return null;
}
}
}
#endregion
#endregion
}
}
using System.Collections.Generic;
using System.Text;
using System.Data.Common;
using System.Configuration;
using System.Data;
namespace DAL
{
public class Database
{
#region 字段
private const string defaultConnectionConfigKey ="default";
/// <summary>
/// 数据连接字符串
/// </summary>
private string connectionString;
/// <summary>
/// 数据库 驱动 提供者
/// </summary>
private string providerName;
/// <summary>
/// 数据库 驱动 提供者 工厂
/// </summary>
private DbProviderFactory factory;
#endregion
#region 构造函数
/// <summary>
/// 默认构造函数 注意 config文件的,数据库连接节点名称默认为"default",
/// 才调用此初始构造函数。否则调用重载构造函数。
/// </summary>
public Database():this(defaultConnectionConfigKey)
{
}
/// <summary>
/// 以config中的数据库节点名为参数构造数据库访问对象
/// </summary>
/// <param name="conConfigKey">config中的数据库节点名</param>
public Database(string conConfigKey)
{
ConnectionStringSettings settings = ConfigurationManager.ConnectionStrings[conConfigKey];//连接App.config的数据库的 连接
connectionString = settings.ConnectionString;//获得链接字符串
providerName = settings.ProviderName;//得到链接名
factory = DbProviderFactories.GetFactory(providerName);//连接到sql数据库
}
#endregion
#region 方法
#region 执行查询语句,返回一组数据——返回类型是DataTable
/// <summary>
/// 执行查询语句,返回一组数据。返回类型是DataTable。
/// 一般为Select的sql语句
/// </summary>
/// <param name="sql">执行的Sql语句</param>
/// <returns>返回数据的DataTable</returns>
public DataTable Select(string sql)
{
using (DbConnection conn = factory.CreateConnection())//连接数据库
{
try
{
conn.ConnectionString = connectionString;//得到链接的字符串
conn.Open();//打开连接
DbDataAdapter adapter = factory.CreateDataAdapter();//
adapter.SelectCommand = conn.CreateCommand();//创建连接命令
adapter.SelectCommand.CommandText = sql;//执行查询的sql命令
DataTable table = new DataTable();//定义表
adapter.Fill(table);//填充表
return table;//返回表
}
catch
{
conn.Close();//关闭连接
return null;//返回空值
}
}
}
#endregion
#region 执行 语句 返回影响的行数
/// <summary>
/// 执行sql语句,一般为更新(update),插入(insert)、删除(delete)的操作。
/// 返回的是数据库执行sql语句,影响的数据表行数。
/// </summary>
/// <param name="sql">执行的Sql语句</param>
/// <returns>返回的是数据库执行sql语句,影响的数据表行数。</returns>
public int Exec(string sql)
{
using (DbConnection conn = factory.CreateConnection())
{
try
{
DbCommand cmd = conn.CreateCommand();
cmd.CommandText = sql;
conn.ConnectionString = connectionString;
conn.Open();
int i = cmd.ExecuteNonQuery();
return i;
}
catch
{
conn.Close();
return 0;
}
}
}
#endregion
#region 执行语句返回 首行首列,返回类型是Object类型。
/// <summary>
/// 执行sql语句,返回首行首列。返回类型是Object类型。
/// </summary>
/// <param name="sql">执行的Sql语句</param>
/// <returns>返回Object类型的首行首列数据。</returns>
public Object ExecScalar(string sql)
{
using (DbConnection conn = factory.CreateConnection())
{
try
{
DbCommand cmd = conn.CreateCommand();
cmd.CommandText = sql;
conn.ConnectionString = connectionString;
conn.Open();
Object i = cmd.ExecuteScalar();
return i;
}
catch
{
conn.Close();
return null;
}
}
}
#endregion
#endregion
}
}