ASP.NET連接配接oracle資料庫
首先我們在oracle資料庫管理工具P/L SQL Developer中建立一個表,假設為銷售表(WARE_RETAIL_PART),并添加幾條記錄,結果如下:
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiIXZ05WZD9CX5RXa2Fmcn9CXwczLcVmds92czlGZvwVP9EUTDZ0aRJkSwk0LcxGbpZ2LcBDM08CXlpXazRnbvZ2LcRlMMVDT2EWNvwFdu9mZvwVNnR1T4NWbiZHbzoVdGdUY2w2RiZXUYpVd1kmYr50MZV3YyI2cKJDT29GRjBjUIF2LcRHelR3LcJzLctmch1mclRXY39DO2kDOyUDM3ETMwYDM0EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
接着,我們打開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成功了!