我给你一个最简单的例子,要改造才能用,数据库是oracle: using System; using System.Data ; using System.Data .OracleClient ;namespace Class1 { /// <summary> /// Summary description for Class1. /// </summary> public class DataAccess//处理数据的类 { Inside insideString=new Inside ();//新增一个Inside类的实例 public DataAccess() {
OpenConnection(); }
private OracleConnection Connection; ~DataAccess() { CloseConnection(); } public void OpenConnection()//从配置文件中取出连接字符串 { Connection = new OracleConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"]); Connection.Open();//打开数据库的连接 } public void CloseConnection() { Connection.Close(); }
public DataSet GetDataBySql(string Query)//根据选择条件返回DATASET集合用于在前端绑定数据控件 { string connectionString=Query; OracleCommand selectCommand ; DataSet ds = new DataSet(); OpenConnection(); selectCommand=new OracleCommand (connectionString,Connection); OracleDataAdapter data =new OracleDataAdapter (); data.SelectCommand =selectCommand; data.Fill(ds,"Data"); //CloseConnection(); Connection.Close(); return ds; } public void ExecuteQuery(string Query)//执行插入,删除等对数据库的操作 {
所以我想写一个类.专门用来管理于数据库交流的.
using System.Data.OleDb;namespace RestaurantManager
{
/// <summary>
/// SQLServerWrapper 数据库连接提供类
/// </summary>
public class SQLServerWrapper
{
//一个静态的连接接口;
public static System.Data.IDbConnection conn = null;
/// <summary>
/// 构造方法,设为私有类型,是防止外部无效的引用;
/// </summary> //public string RemoteConnectionString = "User ID=sa;Data Source=cnwolfs;Password=cellblue;Initial Catalog=RestaurantManager;Provider='SQLOLEDB.1';";
public string RemoteConnectionString = "Provider=sqloledb;Data Source=cnwolfs;Initial Catalog=ProjectMass;User Id=sa;Password=cellblue;" ;
public static string RemoteConnectionStringSQL = "Data Source=cnwolfs;Initial Catalog=ProjectMass;User Id=sa;Password=cellblue;"; public static System.Data.SqlClient.SqlConnection SQLconn = null;
public SQLServerWrapper()
{
//
// TODO: 在此处添加构造函数逻辑
//
System.Data.IDbCommand x=new System.Data.OleDb.OleDbCommand(); if (getSqlConn() == true)
{
}
}
// /// <summary>
// /// 数据库连接类型,即判断是System.Data.SqlClient类型或者是System.Data.OleDB类型的。
// /// </summary>
private static DBType DataBaseType
{
get
{
//从配置文件当中读取数据库类型字符串
string m_DBType=System.Configuration.ConfigurationSettings.AppSettings["DataBase.Type"];
//如果未设置默认为System.Data.SqlClient类型的连接
if(m_DBType==null)
{
return DBType.SqlClient;
}
else
{
//如果为空或者为MSSQLServer2000,则使用System.Data.SqlClient类型的连接
if(m_DBType.Trim()==""||m_DBType.Trim().ToUpper()=="MSSQLSERVER2000"||m_DBType.Trim().ToUpper()=="MSSQLSERVER7")
{
return DBType.SqlClient;
}
//其它则返回System.Data.OleDB类型的连接
else
{
if(m_DBType.Trim().ToUpper()=="OLEDB")
{
return DBType.OleDB;
}
}
}
return DBType.OleDB;
}
}
/// <summary>
/// 重载getConn(string)方法,此时连接字符串的标签名将为“DataBase.ConnectionString”
/// <seealso cref="getConn(string) "/>
/// </summary>
/// <returns>返回一个连接</returns>
public static System.Data.IDbConnection getConn()
{
return conn;
}
/// <summary>
/// 获得数据库连接接口
/// </summary>
/// <param name="p_ConnStringSetName">一个在Config文件中设置连接字符串的标签名</param>
/// <returns></returns>
///
public static bool getSqlConn()
{
try
{
SQLconn = new System.Data.SqlClient.SqlConnection(RemoteConnectionStringSQL);
return true;
}
catch
{
throw new Exception("无法找到数据库连接信息,请管理员检查程序的参数信息是否正确,或者是否当前连接已经无效,建议退出系统,检查网络和服务器状况,然后重新连接登录!");
}
} public static bool getIDbConn()
{ string ConnStr="";
string p_ConnStringSetName;
p_ConnStringSetName = RemoteConnectionStringSQL; if(p_ConnStringSetName.Trim() == "")
{
ConnStr=System.Configuration.ConfigurationSettings.AppSettings["DataBase.ConnectionString"];
}
else
{
ConnStr = System.Configuration.ConfigurationSettings.AppSettings[p_ConnStringSetName];
ConnStr = p_ConnStringSetName;
}
if(ConnStr==null||ConnStr=="")
{
throw new Exception("无法找到数据库连接信息,请管理员检查程序的参数信息是否正确,或者是否当前连接已经无效,建议退出系统,然后重新连接登录!");
}
DBType m_DBType; //=SQLServerWrapper.DataBaseType;
/*
* 注释:我们对前面的编码进行了部分的修改,鉴于System.Data.SqlClient的连接
* 字符串当中不可能出现"Provider"字样,所以我们根据是否有Provider字样来判断
* 该连接是基于System.Data.SqlClient的或者System.Data.OleDB的。
* 参考资料:
* 可以将 ConnectionString 属性设置为单个单元。(不能为 SqlConnection 对象指定 Provider 属性。)
* –或–
*
* 可以设置单个属性(DataSource、Database、UserName 等等)。如果设置单个属性,则将为您生成连接字符串。
* 注意 在连接字符串中存储用户名和密码有安全性设置的意味。有关详细信息,请参阅Introduction to ADO.NET Connection Design Tools。
*
*/
if(ConnStr.ToLower().IndexOf("provider")==-1)
{
m_DBType=DBType.SqlClient;
}
else
{
m_DBType=DBType.OleDB;
}
try
{
if(m_DBType==DBType.SqlClient)
{
conn=new System.Data.SqlClient.SqlConnection(ConnStr);
}
else
{
conn=new System.Data.OleDb.OleDbConnection(ConnStr);
}
}
catch
{
throw new Exception("Error to connect DB!");
}
return true; } public static bool getIDbConn(string p_ConnStringSetName)
{ string ConnStr="";
if(p_ConnStringSetName.Trim() == "")
{
ConnStr=System.Configuration.ConfigurationSettings.AppSettings["DataBase.ConnectionString"];
}
else
{
ConnStr = System.Configuration.ConfigurationSettings.AppSettings[p_ConnStringSetName];
ConnStr = p_ConnStringSetName;
}
if(ConnStr==null||ConnStr=="")
{
throw new Exception("无法找到数据库连接信息,请管理员检查程序的参数信息是否正确,或者是否当前连接已经无效,建议退出系统,然后重新连接登录!");
}
DBType m_DBType; //=SQLServerWrapper.DataBaseType;
/*
* 注释:我们对前面的编码进行了部分的修改,鉴于System.Data.SqlClient的连接
* 字符串当中不可能出现"Provider"字样,所以我们根据是否有Provider字样来判断
* 该连接是基于System.Data.SqlClient的或者System.Data.OleDB的。
* 参考资料:
* 可以将 ConnectionString 属性设置为单个单元。(不能为 SqlConnection 对象指定 Provider 属性。)
* –或–
*
* 可以设置单个属性(DataSource、Database、UserName 等等)。如果设置单个属性,则将为您生成连接字符串。
* 注意 在连接字符串中存储用户名和密码有安全性设置的意味。有关详细信息,请参阅Introduction to ADO.NET Connection Design Tools。
*
*/
if(ConnStr.ToLower().IndexOf("provider")==-1)
{
m_DBType=DBType.SqlClient;
}
else
{
m_DBType=DBType.OleDB;
}
try
{
if(m_DBType==DBType.SqlClient)
{
conn=new System.Data.SqlClient.SqlConnection(ConnStr);
}
else
{
conn=new System.Data.OleDb.OleDbConnection(ConnStr);
}
}
catch
{
throw new Exception("Error to connect DB!");
}
return true; }
public System.Data.IDataReader SelectData(string SQLString)
{
System.Data.IDataReader Result = null; try
{
System.Data.IDbCommand command=conn.CreateCommand(); command.CommandText = SQLString;
command.CommandType = System.Data.CommandType.Text; command.Connection.Close();
command.Connection.Open();
command.Prepare();
Result = command.ExecuteReader();
}
catch(Exception ex)
{
throw new Exception("执行查询语句错误!" + ex.Message.ToString() + SQLString);
}
return Result;
} public System.Data.DataSet SelectDataSet(string SQLString)
{
System.Data.DataSet Result = new System.Data.DataSet(); try
{
System.Data.SqlClient.SqlDataAdapter myDataAdapter = new System.Data.SqlClient.SqlDataAdapter(); myDataAdapter.SelectCommand = new System.Data.SqlClient.SqlCommand(SQLString,SQLconn); //System.Data.SqlClient.SqlCommandBuilder myCB = new System.Data.SqlClient.SqlCommandBuilder (myDataAdapter); myDataAdapter.Fill (Result);
}
catch(Exception ex)
{
throw new Exception("执行查询语句错误!" + ex.Message.ToString() + SQLString);
}
return Result;
} public System.Data.DataSet SelectDataSet(string SQLString, string strMappingName)
{
System.Data.DataSet Result = new System.Data.DataSet(); try
{
System.Data.SqlClient.SqlDataAdapter myDataAdapter = new System.Data.SqlClient.SqlDataAdapter(); myDataAdapter.SelectCommand = new System.Data.SqlClient.SqlCommand(SQLString,SQLconn); //System.Data.SqlClient.SqlCommandBuilder myCB = new System.Data.SqlClient.SqlCommandBuilder (myDataAdapter); myDataAdapter.Fill (Result, strMappingName);
}
catch(Exception ex)
{
throw new Exception("执行查询语句错误!" + ex.Message.ToString() + SQLString);
}
return Result;
} public System.Data.DataSet SelectDataSetExchange(string p_strSQL,string p_strTableName)
{
int i;
string strTemp;
string[] strTableName = p_strTableName.Split(';');
System.Data.DataSet Result = new System.Data.DataSet(); try
{ System.Data.SqlClient.SqlDataAdapter myDataAdapter = new System.Data.SqlClient.SqlDataAdapter(); myDataAdapter.SelectCommand = new System.Data.SqlClient.SqlCommand(p_strSQL,SQLconn); System.Data.SqlClient.SqlCommandBuilder myCB = new System.Data.SqlClient.SqlCommandBuilder (myDataAdapter); i = 0; foreach (string strTableNameTemp in strTableName)
{
if (i > 0)
{
strTemp = "Table" + i;
}
else
{
strTemp = "Table";
}
myDataAdapter.TableMappings.Add(strTemp,strTableNameTemp);
i = i + 1;
} myDataAdapter.Fill (Result);
}
catch(Exception ex)
{
throw new Exception("执行查询语句错误!" + ex.Message.ToString() + p_strSQL);
}
return Result;
} /// <summary>
/// 无结果执行命令
/// </summary> public void ExecuteNoResult(string SQLString)
{
try
{
System.Data.IDbCommand command = conn.CreateCommand(); command.CommandText = SQLString;
command.CommandType = System.Data.CommandType.Text; command.Connection.Close();
command.Connection.Open();
command.ExecuteNonQuery();
}
catch
{
throw new Exception("执行SQL命令错误!");
}
}
}
/// <summary>
/// 枚举类型,即一个数据库连接类型的枚举
/// </summary>
enum DBType
{
SqlClient=0,
OleDB=1
}
}
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="ConnectionString" value="User ID=????;Password=???;Data Source=???;" />
</appSettings>
<system.web>
代码中是这么用的://从配置文件当中读取数据库类型字符串
string m_DBType=System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"];运行后编译成dll文件,然后在cs或vb代码中引用。
using System;
using System.Data ;
using System.Data .OracleClient ;namespace Class1
{
/// <summary>
/// Summary description for Class1.
/// </summary>
public class DataAccess//处理数据的类
{
Inside insideString=new Inside ();//新增一个Inside类的实例 public DataAccess()
{
OpenConnection();
}
private OracleConnection Connection;
~DataAccess()
{
CloseConnection();
}
public void OpenConnection()//从配置文件中取出连接字符串
{
Connection = new OracleConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"]);
Connection.Open();//打开数据库的连接
}
public void CloseConnection()
{
Connection.Close();
}
public DataSet GetDataBySql(string Query)//根据选择条件返回DATASET集合用于在前端绑定数据控件
{
string connectionString=Query; OracleCommand selectCommand ;
DataSet ds = new DataSet();
OpenConnection();
selectCommand=new OracleCommand (connectionString,Connection);
OracleDataAdapter data =new OracleDataAdapter ();
data.SelectCommand =selectCommand;
data.Fill(ds,"Data");
//CloseConnection();
Connection.Close();
return ds;
}
public void ExecuteQuery(string Query)//执行插入,删除等对数据库的操作
{
string connectionString=insideString.insdeString (Query);
OpenConnection();
OracleCommand Command = new OracleCommand(connectionString, Connection);
Command.ExecuteNonQuery();
CloseConnection();
}
}
}
不过是SQL版的,改一下就是其他版了。