InterBase6、SQL Server2000、Oracle9i

解决方案 »

  1.   

    刚写了一个mdb与sql2000的.不知对楼主是否有用.using System;
    using System.Web;
    using System.Data;
    using System.Data.SqlClient;
    using System.Data.OleDb;
    using System.Text.RegularExpressions;namespace CXH.WebSite.ClassLibrary
    {
    /// <summary>
    /// 数据库连接类。
    /// </summary>
    public class DBClass
    {
    public string dbtype, connstr_mdb, connstr_sql, connstr; public DBClass()
    {
    string mdb_path = "\\data\\cxh.mdb"; string sql_host = "localhost";
    string sql_uid = "sa";
    string sql_pwd = "";
    string sql_db = "cxh"; connstr_mdb = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = " + HttpContext.Current.Server.MapPath(mdb_path);
    connstr_sql = "server=" + sql_host + ";uid=" + sql_uid + ";pwd=" + sql_pwd + ";database=" + sql_db;
    connstr = connstr_mdb;
    } public string DbType
    {
    get
    {
    return dbtype;
    } set
    {
    switch(dbtype)
    {
    case "mdb":
    dbtype = "mdb";
    connstr = connstr_mdb;
    break; case "sql":
    dbtype = "sql";
    connstr = connstr_sql;
    break; default:
    dbtype = "mdb";
    connstr = connstr_mdb;
    break;
    }
    }
    } public bool Exec(string sql)
    {
    switch(dbtype)
    {
    case "mdb":
    return Exec_mdb(sql); case "sql":
    return Exec_sql(sql); default:
    return Exec_mdb(sql);
    }
    } public DataTable Exec_dt(string sql)
    {
    switch(dbtype)
    {
    case "mdb":
    return Exec_dt_mdb(sql); case "sql":
    return Exec_dt_sql(sql); default:
    return Exec_dt_mdb(sql);
    }
    }
    public OleDbDataReader Exec_dr_mdb(string sql)
    {
    OleDbDataReader dr; OleDbConnection conn = new OleDbConnection(connstr); try
    {
    conn.Open();
    dr = new OleDbCommand(sql, conn).ExecuteReader(CommandBehavior.CloseConnection);
    }
    catch (Exception e)
    {
    HttpContext.Current.Response.Write(e.ToString());
    dr = null;
    } finally
    {
    if (conn != null)
    {
    conn.Close();
    conn.Dispose();
    }
    } return dr;
    } public SqlDataReader Exec_dr_sql(string sql)
    {
    SqlDataReader dr; SqlConnection conn = new SqlConnection(connstr); try
    {
    conn.Open();
    dr = new SqlCommand(sql, conn).ExecuteReader(CommandBehavior.CloseConnection);
    }
    catch (Exception e)
    {
    HttpContext.Current.Response.Write(e.ToString());
    dr = null;
    } finally
    {
    if (conn != null)
    {
    conn.Close();
    conn.Dispose();
    }
    } return dr;
    } public bool Into(string tbName, string fields, string[] values)
    {
    switch(dbtype)
    {
    case "mdb":
    return Into_mdb(tbName, fields, values); case "sql":
    return Into_sql(tbName, fields, values); default:
    return Into_mdb(tbName, fields, values);
    }
    } public bool Update(string tbName, string fields, string[] values, string condition)
    {
    switch(dbtype)
    {
    case "mdb":
    return Update_mdb(tbName, fields, values, condition); case "sql":
    return Update_sql(tbName, fields, values, condition); default:
    return Update_mdb(tbName, fields, values, condition);
    }
    } public string GetValue(string sql)
    {
    switch(dbtype)
    {
    case "mdb":
     return GetValue_mdb(sql); case "sql":
    return GetValue_sql(sql); default:
    return GetValue_mdb(sql);
    }
    } private bool Exec_mdb(string sql)
    {
    bool flag = false; OleDbConnection conn = new OleDbConnection(connstr); try
    {
    conn.Open();
    new OleDbCommand(sql, conn).ExecuteNonQuery(); flag = true;
    }
    catch (Exception)
    {
    flag = false;
    }
    finally
    {
    if (conn != null)
    {
    conn.Close();
    conn.Dispose();
    }
    } return flag;
    } private bool Exec_sql(string sql)
    {
    bool flag = false; SqlConnection conn = new SqlConnection(connstr); try
    {
    conn.Open();
    new SqlCommand(sql, conn).ExecuteNonQuery(); flag = true;
    }
    catch (Exception)
    {
    flag = false;
    }
    finally
    {
    if (conn != null)
    {
    conn.Close();
    conn.Dispose();
    }
    } return flag;
    } private DataTable Exec_dt_mdb(string sql)
    {
    DataSet dt = new DataSet();
    OleDbConnection conn = new OleDbConnection(connstr); try
    {
    OleDbDataAdapter da = new OleDbDataAdapter(sql, conn);
    da.Fill(dt);
    da.Dispose();
    }
    catch (Exception e)
    {
    HttpContext.Current.Response.Write(e.ToString());
    }
    finally
    {
    conn.Close();
    conn.Dispose();
    } return dt.Tables[0];
    } private DataTable Exec_dt_sql(string sql)
    {
    DataSet dt = new DataSet();
    SqlConnection conn = new SqlConnection(connstr); try
    {
    SqlDataAdapter da = new SqlDataAdapter(sql, conn);
    da.Fill(dt);
    da.Dispose();
    }
    catch (Exception e)
    {
    HttpContext.Current.Response.Write(e.ToString());
    }
    finally
    {
    conn.Close();
    conn.Dispose();
    } return dt.Tables[0];
    } private bool Into_mdb(string tbName, string fields, string[] values)
    {
    bool flag = false;
    string str1 = "";
    string str2 = ""; OleDbConnection conn = new OleDbConnection(connstr); try
    {
    OleDbCommand myCommand = new OleDbCommand(); for (int i = 0; i < (int)values.Length; i++)
    {
    if (i == (int)values.Length - 1)
    {
    str1 = String.Concat(str1, "@v", i.ToString());
    }
    else
    {
    str1 = String.Concat(str1, "@v", i.ToString(), ",");
    }
    myCommand.Parameters.Add(new SqlParameter(String.Concat("@v", i.ToString()), SqlDbType.VarChar, values[i].ToString().Length));
    myCommand.Parameters[String.Concat("@v", i.ToString())].Value = values[i].ToString();
    } str2 = String.Concat(new string[]{"insert into ", tbName, "(", fields, ")values(", str1, ")"}); conn.Open();
    myCommand.Connection = conn;
    myCommand.CommandText = str2;
    myCommand.ExecuteNonQuery(); flag = true;
    } catch (Exception e)
    {
    HttpContext.Current.Response.Write(e.ToString());
    flag = false;
    } finally
    {
    if (conn != null)
    {
    conn.Close();
    conn.Dispose();
    }
    } return flag; }
      

  2.   

    private bool Into_sql(string tbName, string fields, string[] values)
    {
    bool flag = false;
    string str1 = "";
    string str2 = ""; SqlConnection conn = new SqlConnection(connstr); try
    {
    SqlCommand myCommand = new SqlCommand(); for (int i = 0; i < (int)values.Length; i++)
    {
    if (i == (int)values.Length - 1)
    {
    str1 = String.Concat(str1, "@v", i.ToString());
    }
    else
    {
    str1 = String.Concat(str1, "@v", i.ToString(), ",");
    }
    myCommand.Parameters.Add(new SqlParameter(String.Concat("@v", i.ToString()), SqlDbType.VarChar, values[i].ToString().Length));
    myCommand.Parameters[String.Concat("@v", i.ToString())].Value = values[i].ToString();
    } str2 = String.Concat(new string[]{"insert into ", tbName, "(", fields, ")values(", str1, ")"}); conn.Open();
    myCommand.Connection = conn;
    myCommand.CommandText = str2;
    myCommand.ExecuteNonQuery(); flag = true;
    } catch (Exception e)
    {
    HttpContext.Current.Response.Write(e.ToString());
    flag = false;
    } finally
    {
    if (conn != null)
    {
    conn.Close();
    conn.Dispose();
    }
    } return flag;
    } public bool Update_mdb(string tbName, string fields, string[] values, string condition)
    {
    bool flag = false;
    string[] strs;
    string str1 = "";
    string str2 = "";
    string str3 = ""; OleDbConnection conn = new OleDbConnection(connstr); try
    {
    OleDbCommand myCommand = new OleDbCommand();

    for (int i = 0; i < (int)fields.Length; i++)
    {
    if (i == (int)fields.Length - 1)
    {
    str1 = String.Concat(str1, fields[i].ToString(), "=@", fields[i].ToString());
    }
    else
    {
    str3 = str1;
    strs = new string[]{str3, fields[i].ToString(), "=@", fields[i].ToString(), ","};
    str1 = String.Concat(strs);
    }
    myCommand.Parameters.Add(new SqlParameter(String.Concat("@", fields[i].ToString()), SqlDbType.VarChar, values[i].ToString().Length));
    myCommand.Parameters[String.Concat("@", fields[i].ToString())].Value = values[i].ToString();
    }
    strs = new string[]{"UPDATE ", tbName, " SET ", str1, " WHERE ", condition};
    str2 = String.Concat(strs);
    conn.Open();
    myCommand.Connection = conn;
    myCommand.CommandText = str2;
    myCommand.ExecuteNonQuery(); flag = true;
    } catch (Exception e)
    {
    HttpContext.Current.Response.Write(e.ToString());
    flag = false;
    } finally
    {
    if (conn != null)
    {
    conn.Close();
    conn.Dispose();
    }
    }

    return flag;
    } public bool Update_sql(string tbName, string fields, string[] values, string condition)
    {
    bool flag = false;
    string[] strs;
    string str1 = "";
    string str2 = "";
    string str3 = ""; SqlConnection conn = new SqlConnection(connstr); try
    {
    SqlCommand myCommand = new SqlCommand();

    for (int i = 0; i < (int)fields.Length; i++)
    {
    if (i == (int)fields.Length - 1)
    {
    str1 = String.Concat(str1, fields[i].ToString(), "=@", fields[i].ToString());
    }
    else
    {
    str3 = str1;
    strs = new string[]{str3, fields[i].ToString(), "=@", fields[i].ToString(), ","};
    str1 = String.Concat(strs);
    }
    myCommand.Parameters.Add(new SqlParameter(String.Concat("@", fields[i].ToString()), SqlDbType.VarChar, values[i].ToString().Length));
    myCommand.Parameters[String.Concat("@", fields[i].ToString())].Value = values[i].ToString();
    }
    strs = new string[]{"UPDATE ", tbName, " SET ", str1, " WHERE ", condition};
    str2 = String.Concat(strs);
    conn.Open();
    myCommand.Connection = conn;
    myCommand.CommandText = str2;
    myCommand.ExecuteNonQuery(); flag = true;
    } catch (Exception e)
    {
    HttpContext.Current.Response.Write(e.ToString());
    flag = false;
    } finally
    {
    if (conn != null)
    {
    conn.Close();
    conn.Dispose();
    }
    }

    return flag;
    } public string GetValue_mdb(string sql)
    {
    string returnValue = null; OleDbConnection conn = new OleDbConnection(connstr); try
    {
    conn.Open();
    OleDbDataReader dr = new OleDbCommand(sql, conn).ExecuteReader(); if (dr.Read())
    {
    returnValue = dr[0].ToString();
    } dr.Close();
    } catch (Exception e)
    {
    HttpContext.Current.Response.Write(e.ToString());
    returnValue = "";
    } finally
    {
    if (conn != null)
    {
    conn.Close();
    conn.Dispose();
    }
    } return returnValue; } public string GetValue_sql(string sql)
    {
    string returnValue = null; SqlConnection conn = new SqlConnection(connstr); try
    {
    conn.Open();
    SqlDataReader dr = new SqlCommand(sql, conn).ExecuteReader(); if (dr.Read())
    {
    returnValue = dr[0].ToString();
    } dr.Close();
    } catch (Exception e)
    {
    HttpContext.Current.Response.Write(e.ToString());
    returnValue = "";
    } finally
    {
    if (conn != null)
    {
    conn.Close();
    conn.Dispose();
    }
    } return returnValue;
    } ~DBClass()
    {
    try
    {
    GC.Collect();
    }
    finally{}
    }
    } }
    }
      

  3.   

    你可以参考AspNetForum2.0(C#)或者DotNetNuke(VB.NET)的做法,提供两个不同的DataProvider,通过web.config可以轻松配置。