为了方便操纵数据库,编写了一个数据库类。经过多次修改,变成以下样子:
using System;
using System.Data;
using System.Data.Odbc;
using System.Data.OleDb;
using System.Data.SqlClient;
using System.Data.Common;using System.IO;
namespace com.hnrui.db2005
{
/// <summary>
/// HrDB: 数据库操纵
/// </summary>
public class HrDB
{
private static DateTime sqlMinDateTime = DateTime.MinValue;
private static DateTime sqlMaxDateTime = DateTime.MinValue;
public static DateTime SqlMinDateTime
{
get
{
if (sqlMinDateTime == DateTime.MinValue)
sqlMinDateTime = new DateTime(1753, 1, 1);
return sqlMinDateTime;
}
}
public static DateTime SqlMaxDateTime
{
get
{
if (sqlMaxDateTime == DateTime.MinValue)
sqlMaxDateTime = new DateTime(9999, 12, 31);
return sqlMaxDateTime;
}
}private string dbConString = null;
private DataProviderType m_DataProviderType = DataProviderType.SQLCLIENT;private string mErrors= "";
public string Errors
{
get
{
string res = mErrors;
mErrors = ""; //错误信息提取后自动清除
return res;
}
}
public bool HasErrors
{
get { return mErrors != ""; }
}#region 构造函数
/// <summary>
/// 使用 SqlClient 设置缺省连接
/// </summary>
/// <param name="serverName">服务器</param>
/// <param name="dataBaseName">数据库</param>
/// <param name="userName">用户名</param>
/// <param name="password">密码</param>
public HrDB(
string serverName,
string dataBaseName,
string userName,
string password)
{
m_DataProviderType = DataProviderType.SQLCLIENT;
dbConString =
"Initial Catalog=" + dataBaseName + ";"
+ "Data Source=" + serverName + ";"
+ "User ID=" + userName + ";"
+ "Password=" + password + ";"
+ "Application Name=HengRui" + ";"
+ "Connection Timeout=60";
}/// <summary>
/// 使用 SqlClient 设置缺省连接
/// </summary>
/// <param name="serverName">服务器</param>
/// <param name="dataBaseName">数据库</param>
/// <param name="userName">用户名</param>
/// <param name="password">密码</param>
/// <param name="appname">应用程序名</param>
public HrDB(
string serverName,
string dataBaseName,
string userName,
string password,
string appName)
{
m_DataProviderType = DataProviderType.SQLCLIENT;
dbConString =
"Initial Catalog=" + dataBaseName + ";"
+ "Data Source=" + serverName + ";"
+ "User ID=" + userName + ";"
+ "Password=" + password + ";"
+ "Application Name=" + appName +";"
+ "Connection Timeout=60";}
/// <summary>
/// 使用dataProviderType和连接字符串创建缺省连接
/// </summary>
/// <param name="dataProviderType">数据库类型:SqlClient,Oledb,Odbc,Oracle</param>
/// <param name="connectionString">连接字符串</param>
public HrDB(DataProviderType dataProviderType, String connectionString)
{
m_DataProviderType = dataProviderType;
dbConString = connectionString;
}public HrDB(string dataProvider, string connectionString)
{
DataProviderType dp = DataProviderType.SQLCLIENT;
switch (dataProvider.ToUpper())
{
case "OLEDB":
dp = DataProviderType.OLEDB;
break;
case "ODBC":
dp = DataProviderType.ODBC;
break;
case "ORACLE":
dp = DataProviderType.ORACLE;
break;
default:
dp = DataProviderType.SQLCLIENT;
break;
}
m_DataProviderType = dp;
dbConString = connectionString;
}#endregion
public bool IsConnectOk
{
get
{
DbConnection dbcon = OpenConnection();
if (dbcon == null)
return false;ColseConnection(dbcon);
return true;
}
}public DbConnection OpenConnection()
{
DbConnection dbCon = OpenConnection(m_DataProviderType, dbConString);if (dbCon != null)
if (dbCon.State == ConnectionState.Closed)
dbCon.Open();return dbCon;
}
/// <summary>
/// 连接数据库并保持打开
/// </summary>
/// <param name="dataProviderType">数据库类型:SqlClient,Oledb,Odbc,Oracle</param>
/// <param name="connectionString">连接字符串</param>
private DbConnection OpenConnection(DataProviderType dataProviderType, String connectionString)
{
DbConnection con = null;
try
{
switch (dataProviderType)
{
case DataProviderType.SQLCLIENT:
System.Data.SqlClient.SqlConnection sqlCon = new SqlConnection(connectionString);
con = sqlCon;
break;
case DataProviderType.OLEDB:
System.Data.OleDb.OleDbConnection oleCon = new OleDbConnection(connectionString);
con = oleCon;
break;
case DataProviderType.ODBC:
System.Data.Odbc.OdbcConnection odbcCon = new OdbcConnection(connectionString);
con = odbcCon;
break;
default:
con = null;
break;
}if (con != null)
{