ASP.NET操作Oracle數據庫方法

ASP.NET連接Oracle數據庫

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

 

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

[html] view plain copy
 在CODE上查看代碼片派生到我的代碼片
  1. <connectionStrings>  
  2.      <add name="OracleConnString" connectionString="Data Source=ORCL;User ID=crm;Password=Oracle11" providerName="System.Data.OracleClient"/>  
  3. </connectionStrings>  

其中,Data Source是oracle數據庫的實例名,後面的分別是用戶名和密碼。

            然後我們在項目App_Code文件夾下新建一個類,命名爲DB.cs,該類主要用於連接和操作oracle數據庫。編寫代碼如下:

[csharp] view plain copy
 在CODE上查看代碼片派生到我的代碼片
  1. using System;  
  2. using System.Data;  
  3. using System.Configuration;  
  4. using System.Web;  
  5. using System.Web.Security;  
  6. using System.Web.UI;  
  7. using System.Web.UI.WebControls;  
  8. using System.Web.UI.WebControls.WebParts;  
  9. using System.Web.UI.HtmlControls;  
  10. using System.Data.SqlClient;  
  11. using System.Data.OracleClient;  
  12. /// <summary>  
  13. /// DB 的摘要說明  
  14. /// </summary>  
  15. public class DB  
  16. {  
  17.   
  18.   
  19.     public DB()  
  20.     {  
  21.         //  
  22.         // TODO: 在此處添加構造函數邏輯  
  23.         //  
  24.     }  
  25.  
  26.     #region 配置連接字符串  
  27.     /// 配置連接字符串  
  28.     /// </summary>  
  29.     /// <returns>返回SqlConnection對象</returns>  
  30.     public static OracleConnection GetCon()  
  31.     {  
  32.   
  33.         return new OracleConnection(ConfigurationManager.ConnectionStrings["OracleConnString"].ToString());//配置連接字符串  
  34.   
  35.     }  
  36.  
  37.     #endregion  
  38.  
  39.  
  40.     #region 執行SQL語句(增刪改操作)  
  41.     /// <summary>  
  42.     /// 執行SQL語句  
  43.     /// </summary>  
  44.     /// <param name="P_str_cmdtxt">用來執行的SQL語句</param>  
  45.     /// <returns>返回是否成功,成功返回True,否則返回False</returns>  
  46.     public static bool exSql(string P_str_cmdtxt)  
  47.     {  
  48.         OracleConnection con = DB.GetCon();//連接數據庫  
  49.         con.Open();//打開連接  
  50.         OracleCommand cmd = new OracleCommand(P_str_cmdtxt, con);  
  51.         try  
  52.         {  
  53.             cmd.ExecuteNonQuery();//執行SQL 語句並返回受影響的行數  
  54.             return true;  
  55.         }  
  56.         catch (Exception e)  
  57.         {  
  58.             return false;  
  59.         }  
  60.         finally  
  61.         {  
  62.             con.Dispose();//釋放連接對象資源  
  63.         }  
  64.     }  
  65.     #endregion  
  66.  
  67.     #region  返回DataSet結果集  
  68.     /// <summary>  
  69.     /// 返回DataSet結果集  
  70.     /// </summary>  
  71.     /// <param name="P_Str_Condition">用來查詢的SQL語句</param>  
  72.     /// <returns>結果集</returns>  
  73.     public static DataSet getDataSet(string P_str_cmdtxt)  
  74.     {  
  75.         OracleConnection con = DB.GetCon();//連接上數據庫  
  76.         OracleDataAdapter da = new OracleDataAdapter(P_str_cmdtxt, con);  
  77.         DataSet ds = new DataSet();  
  78.         da.Fill(ds);  
  79.         return ds;//返回DataSet對象  
  80.     }  
  81.     #endregion  
  82.  
  83.     #region 根據指定SQL語句select獲取記錄集合中的第一行數據  
  84.     /// <summary>  
  85.     /// 根據指定SQL語句select獲取記錄集合中的第一行數據  
  86.     /// </summary>  
  87.     /// <param name="sqlString">SQL語句</param>  
  88.     /// <returns>根據指定SQL語句select獲取記錄集合中的第一行數據</returns>  
  89.     public static DataRow GetDataRow(string sqlString)  
  90.     {  
  91.         DataSet ds = getDataSet(sqlString);  
  92.         ds.CaseSensitive = false;//表示DataTable對象中的字符串比較不區分大小寫  
  93.         if (ds.Tables[0].Rows.Count > 0)  
  94.         {  
  95.             return ds.Tables[0].Rows[0];  
  96.         }  
  97.         else  
  98.         {  
  99.             return null;  
  100.         }  
  101.     }  
  102.     #endregion  
  103.  
  104.     #region 查詢數據是否存在的方法  
  105.     /// <summary>  
  106.     /// 查詢數據是否存在的方法  
  107.     /// </summary>  
  108.     /// <param name="sql">需要執行的SQL語句</param>  
  109.     /// <returns>返回一個布爾值當數據存在返回True否則返回False</returns>  
  110.     public static bool isName(string sql)  
  111.     {  
  112.         //創建數據庫連接  
  113.         OracleConnection con = GetCon();  
  114.         //打開數據庫連接  
  115.         con.Open();  
  116.         //創建SqlCommand對象  
  117.         OracleCommand com = new OracleCommand(sql, con);  
  118.         //判斷數據是否存在並返回相應的布爾值  
  119.         if (Convert.ToInt32(com.ExecuteScalar()) > 0)  
  120.         {  
  121.             return true;  
  122.         }  
  123.         else  
  124.         {  
  125.             return false;  
  126.         }  
  127.     }  
  128.     #endregion  
  129.  
  130.     #region 返回需要統計數據的結果(比如記錄數)  
  131.     /// <summary>  
  132.     /// 返回需要統計數據的結果  
  133.     /// </summary>  
  134.     /// <param name="sql">需要查詢的SQL語句</param>  
  135.     /// <returns>返回整型變量,表示統計後的結果</returns>  
  136.     public static int countData(string sql)  
  137.     {  
  138.         //創建數據庫連接  
  139.         // string new_sql = CleanSQL(sql);  
  140.         OracleConnection con = GetCon();  
  141.         //打開數據庫連接  
  142.         con.Open();  
  143.         //創建SqlCommand對象  
  144.         OracleCommand com = new OracleCommand(sql, con);  
  145.         //返回查詢的結果  
  146.         return Convert.ToInt32(com.ExecuteScalar());  
  147.   
  148.     }  
  149.     #endregion  
  150.  
  151.     #region 用來執行用戶登錄操作,使用參數傳遞  
  152.     /// <summary>  
  153.     /// 該方法用來執行用戶登錄操作,使用參數傳遞。  
  154.     /// </summary>  
  155.     /// <param name="sql">需要執行的sql語句</param>  
  156.     /// <param name="name">用戶登錄名</param>  
  157.     /// <param name="pass">用戶登錄密碼</param>  
  158.     /// <returns>返回一個布爾值,表示是否登錄成功</returns>  
  159.     public static bool entrySql(string sql, string name, string pass, string type)  
  160.     {  
  161.         //創建數據庫連接  
  162.   
  163.         OracleConnection con = DB.GetCon();//連接數據庫  
  164.         con.Open();//打開連接  
  165.         //創建SqlCommand對象  
  166.         OracleCommand com = new OracleCommand(sql, con);  
  167.         //設置參數的類型  
  168.         com.Parameters.Add(new SqlParameter("name", SqlDbType.VarChar, 50));  
  169.         //設置參數的值  
  170.         com.Parameters["name"].Value = name;  
  171.         //設置參數的類型  
  172.         com.Parameters.Add(new SqlParameter("pass", SqlDbType.VarChar, 50));  
  173.         //設置參數的值  
  174.         com.Parameters["pass"].Value = pass;  
  175.         com.Parameters.Add(new SqlParameter("type", SqlDbType.VarChar, 50));  
  176.         //設置參數的值  
  177.         com.Parameters["type"].Value = type;  
  178.         //判斷是否登錄成功並返回布爾值  
  179.         if (Convert.ToInt32(com.ExecuteScalar()) > 0)  
  180.         {  
  181.             con.Close();  
  182.             return true;  
  183.   
  184.   
  185.         }  
  186.         else  
  187.         {  
  188.             con.Close();  
  189.             return false;  
  190.         }  
  191.     }  
  192.     #endregion  
  193.  
  194.     #region  綁定用戶頁面中的GridView控件  
  195.     /// <summary>  
  196.     /// 此方法實現數據綁定到GridView中  
  197.     /// </summary>  
  198.     /// <param name="dl">要綁定的控件</param>  
  199.     /// <param name="SqlCom">要執行的SQL語句</param>  
  200.     /// <returns></returns>  
  201.     public static bool BindGridView(GridView dl, string SqlCom)  
  202.     {  
  203.         dl.DataSource = DB.getDataSet(SqlCom);  
  204.         try  
  205.         {  
  206.             dl.DataBind();  
  207.             return true;  
  208.         }  
  209.         catch  
  210.         {  
  211.             return false;  
  212.         }  
  213.         finally  
  214.         {  
  215.             OracleConnection sqlcon = DB.GetCon();//連接數據庫  
  216.             sqlcon.Close();  
  217.         }  
  218.     }  
  219.     #endregion  
  220.     public static bool BindDropDownList(DropDownList ddl, string SqlCom)  
  221.     {  
  222.         DataSet ds = DB.getDataSet(SqlCom);  
  223.         ddl.DataSource = ds.Tables[0].DefaultView;  
  224.         try  
  225.         {  
  226.             ddl.DataTextField = ds.Tables[0].Columns[0].ToString();      //顯示的值    
  227.             ddl.DataValueField = ds.Tables[0].Columns[0].ToString();       //後臺的值  
  228.             ddl.DataBind(); //下拉框綁定  
  229.             //ddl.Items.Insert(0, new ListItem("請選擇", "請選擇"));//此舉必須放到數據綁定之後  
  230.   
  231.             return true;  
  232.         }  
  233.         catch  
  234.         {  
  235.             return false;  
  236.         }  
  237.         finally  
  238.         {  
  239.             OracleConnection sqlcon = DB.GetCon();//連接數據庫  
  240.             sqlcon.Close();  
  241.         }  
  242.     }  
  243.   
  244.     public static void JsExeC(Control up, string name, string js)  
  245.     {  
  246.   
  247.         ScriptManager.RegisterClientScriptBlock(up, typeof(UpdatePanel), name, js, true);  
  248.     }  
  249.   
  250.     public static string CleanSQL(string mString)  
  251.     {  
  252.         if (mString == null)  
  253.             mString = "";  
  254.         else  
  255.         {  
  256.             mString = mString.Replace("'""''");  
  257.             mString = mString.Replace(";""");  
  258.             mString = mString.Replace("--""");  
  259.         }  
  260.         return mString;  
  261.     }  
  262.   
  263.   
  264.   
  265. }  

           在有了數據庫操作類之後,我們可以在頁面中訪問我們的數據庫了,這裏我們測試下,在頁面前端拖一個GridView,然後在後臺查詢銷售表中的記錄,並把記錄綁定到GridView中。後臺代碼如下:

[csharp] view plain copy
 在CODE上查看代碼片派生到我的代碼片
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Web;  
  5. using System.Web.UI;  
  6. using System.Web.UI.WebControls;  
  7. using System.Data;  
  8. using System.Data.SqlClient;  
  9. using System.Data.OracleClient;  
  10. public partial class Oconnect : System.Web.UI.Page  
  11. {  
  12.     protected void Page_Load(object sender, EventArgs e)  
  13.     {  
  14.         string sql = "select * from WARE_RETAIL_PART";  
  15.         //string tab_name = "WARE_RETAIL_PART";  
  16.         DataSet ds = DB.getDataSet(sql);  
  17.         GridView1.DataSource = ds.Tables[0].DefaultView;  
  18.         GridView1.DataBind();  
  19.               
  20.     }  
  21. }  


          最後,我們點擊運行VS,會在瀏覽器中看到我們銷售表裏的記錄了,如果顯示數據,說明連接oracle成功了!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章