首先我們在oracle數據庫管理工具P/L SQL Developer中創建一個表,假設爲銷售表(WARE_RETAIL_PART),並添加幾條記錄,結果如下:
接着,我們打開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成功了!