天天看點

ASP.NET操作Oracle資料庫方法

ASP.NET連接配接oracle資料庫

              首先我們在oracle資料庫管理工具P/L SQL Developer中建立一個表,假設為銷售表(WARE_RETAIL_PART),并添加幾條記錄,結果如下:

ASP.NET操作Oracle資料庫方法

          接着,我們打開VS2010,然後在Web.config檔案中找到<connectionStrings></connectionStrings>節點,在節點中添加如下一句話。

<connectionStrings>
     <add name="OracleConnString" connectionString="Data Source=ORCL;User ID=crm;Password=Oracle11" providerName="System.Data.OracleClient"/>
</connectionStrings>
           

其中,Data Source是oracle資料庫的執行個體名,後面的分别是使用者名和密碼。

            然後我們在項目App_Code檔案夾下建立一個類,命名為DB.cs,該類主要用于連接配接和操作oracle資料庫。編寫代碼如下:

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.Data.OracleClient;
/// <summary>
/// DB 的摘要說明
/// </summary>
public class DB
{


    public DB()
    {
        //
        // TODO: 在此處添加構造函數邏輯
        //
    }

    #region 配置連接配接字元串
    /// 配置連接配接字元串
    /// </summary>
    /// <returns>傳回SqlConnection對象</returns>
    public static OracleConnection GetCon()
    {

        return new OracleConnection(ConfigurationManager.ConnectionStrings["OracleConnString"].ToString());//配置連接配接字元串

    }

    #endregion


    #region 執行SQL語句(增删改操作)
    /// <summary>
    /// 執行SQL語句
    /// </summary>
    /// <param name="P_str_cmdtxt">用來執行的SQL語句</param>
    /// <returns>傳回是否成功,成功傳回True,否則傳回False</returns>
    public static bool exSql(string P_str_cmdtxt)
    {
        OracleConnection con = DB.GetCon();//連接配接資料庫
        con.Open();//打開連接配接
        OracleCommand cmd = new OracleCommand(P_str_cmdtxt, con);
        try
        {
            cmd.ExecuteNonQuery();//執行SQL 語句并傳回受影響的行數
            return true;
        }
        catch (Exception e)
        {
            return false;
        }
        finally
        {
            con.Dispose();//釋放連接配接對象資源
        }
    }
    #endregion

    #region  傳回DataSet結果集
    /// <summary>
    /// 傳回DataSet結果集
    /// </summary>
    /// <param name="P_Str_Condition">用來查詢的SQL語句</param>
    /// <returns>結果集</returns>
    public static DataSet getDataSet(string P_str_cmdtxt)
    {
        OracleConnection con = DB.GetCon();//連接配接上資料庫
        OracleDataAdapter da = new OracleDataAdapter(P_str_cmdtxt, con);
        DataSet ds = new DataSet();
        da.Fill(ds);
        return ds;//傳回DataSet對象
    }
    #endregion

    #region 根據指定SQL語句select擷取記錄集合中的第一行資料
    /// <summary>
    /// 根據指定SQL語句select擷取記錄集合中的第一行資料
    /// </summary>
    /// <param name="sqlString">SQL語句</param>
    /// <returns>根據指定SQL語句select擷取記錄集合中的第一行資料</returns>
    public static DataRow GetDataRow(string sqlString)
    {
        DataSet ds = getDataSet(sqlString);
        ds.CaseSensitive = false;//表示DataTable對象中的字元串比較不區分大小寫
        if (ds.Tables[0].Rows.Count > 0)
        {
            return ds.Tables[0].Rows[0];
        }
        else
        {
            return null;
        }
    }
    #endregion

    #region 查詢資料是否存在的方法
    /// <summary>
    /// 查詢資料是否存在的方法
    /// </summary>
    /// <param name="sql">需要執行的SQL語句</param>
    /// <returns>傳回一個布爾值當資料存在傳回True否則傳回False</returns>
    public static bool isName(string sql)
    {
        //建立資料庫連接配接
        OracleConnection con = GetCon();
        //打開資料庫連接配接
        con.Open();
        //建立SqlCommand對象
        OracleCommand com = new OracleCommand(sql, con);
        //判斷資料是否存在并傳回相應的布爾值
        if (Convert.ToInt32(com.ExecuteScalar()) > 0)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    #endregion

    #region 傳回需要統計資料的結果(比如記錄數)
    /// <summary>
    /// 傳回需要統計資料的結果
    /// </summary>
    /// <param name="sql">需要查詢的SQL語句</param>
    /// <returns>傳回整型變量,表示統計後的結果</returns>
    public static int countData(string sql)
    {
        //建立資料庫連接配接
        // string new_sql = CleanSQL(sql);
        OracleConnection con = GetCon();
        //打開資料庫連接配接
        con.Open();
        //建立SqlCommand對象
        OracleCommand com = new OracleCommand(sql, con);
        //傳回查詢的結果
        return Convert.ToInt32(com.ExecuteScalar());

    }
    #endregion

    #region 用來執行使用者登入操作,使用參數傳遞
    /// <summary>
    /// 該方法用來執行使用者登入操作,使用參數傳遞。
    /// </summary>
    /// <param name="sql">需要執行的sql語句</param>
    /// <param name="name">使用者登入名</param>
    /// <param name="pass">使用者登入密碼</param>
    /// <returns>傳回一個布爾值,表示是否登入成功</returns>
    public static bool entrySql(string sql, string name, string pass, string type)
    {
        //建立資料庫連接配接

        OracleConnection con = DB.GetCon();//連接配接資料庫
        con.Open();//打開連接配接
        //建立SqlCommand對象
        OracleCommand com = new OracleCommand(sql, con);
        //設定參數的類型
        com.Parameters.Add(new SqlParameter("name", SqlDbType.VarChar, 50));
        //設定參數的值
        com.Parameters["name"].Value = name;
        //設定參數的類型
        com.Parameters.Add(new SqlParameter("pass", SqlDbType.VarChar, 50));
        //設定參數的值
        com.Parameters["pass"].Value = pass;
        com.Parameters.Add(new SqlParameter("type", SqlDbType.VarChar, 50));
        //設定參數的值
        com.Parameters["type"].Value = type;
        //判斷是否登入成功并傳回布爾值
        if (Convert.ToInt32(com.ExecuteScalar()) > 0)
        {
            con.Close();
            return true;


        }
        else
        {
            con.Close();
            return false;
        }
    }
    #endregion

    #region  綁定使用者頁面中的GridView控件
    /// <summary>
    /// 此方法實作資料綁定到GridView中
    /// </summary>
    /// <param name="dl">要綁定的控件</param>
    /// <param name="SqlCom">要執行的SQL語句</param>
    /// <returns></returns>
    public static bool BindGridView(GridView dl, string SqlCom)
    {
        dl.DataSource = DB.getDataSet(SqlCom);
        try
        {
            dl.DataBind();
            return true;
        }
        catch
        {
            return false;
        }
        finally
        {
            OracleConnection sqlcon = DB.GetCon();//連接配接資料庫
            sqlcon.Close();
        }
    }
    #endregion
    public static bool BindDropDownList(DropDownList ddl, string SqlCom)
    {
        DataSet ds = DB.getDataSet(SqlCom);
        ddl.DataSource = ds.Tables[0].DefaultView;
        try
        {
            ddl.DataTextField = ds.Tables[0].Columns[0].ToString();      //顯示的值  
            ddl.DataValueField = ds.Tables[0].Columns[0].ToString();       //背景的值
            ddl.DataBind(); //下拉框綁定
            //ddl.Items.Insert(0, new ListItem("請選擇", "請選擇"));//此舉必須放到資料綁定之後

            return true;
        }
        catch
        {
            return false;
        }
        finally
        {
            OracleConnection sqlcon = DB.GetCon();//連接配接資料庫
            sqlcon.Close();
        }
    }

    public static void JsExeC(Control up, string name, string js)
    {

        ScriptManager.RegisterClientScriptBlock(up, typeof(UpdatePanel), name, js, true);
    }

    public static string CleanSQL(string mString)
    {
        if (mString == null)
            mString = "";
        else
        {
            mString = mString.Replace("'", "''");
            mString = mString.Replace(";", "");
            mString = mString.Replace("--", "");
        }
        return mString;
    }



}
           

           在有了資料庫操作類之後,我們可以在頁面中通路我們的資料庫了,這裡我們測試下,在頁面前端拖一個GridView,然後在背景查詢銷售表中的記錄,并把記錄綁定到GridView中。背景代碼如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.Data.OracleClient;
public partial class Oconnect : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        string sql = "select * from WARE_RETAIL_PART";
        //string tab_name = "WARE_RETAIL_PART";
        DataSet ds = DB.getDataSet(sql);
        GridView1.DataSource = ds.Tables[0].DefaultView;
        GridView1.DataBind();
            
    }
}
           

          最後,我們點選運作VS,會在浏覽器中看到我們銷售表裡的記錄了,如果顯示資料,說明連接配接oracle成功了!

ASP.NET操作Oracle資料庫方法