1. 程式人生 > >ASP.NET C# 連接 Oracle數據庫增刪改查,事務

ASP.NET C# 連接 Oracle數據庫增刪改查,事務

config 註釋 數據庫 using tran datatable 文件 影響 常用

一、知識介紹

  ①ASP.NET 使用的是MVC模式,開發工具Visual studio ,語言C#

  ②Oracle是比較重型的數據庫,這裏主要介紹連接數據庫,對數據進行具體的使用

  ③Visual Studio連接數據庫都是需要dll文件,方法相似。

二、步驟

  ①新建一個ASP項目

  ②右擊項目或引用,管理Nuget程序包。搜索Oracle,下載Oracle的dll依賴

    技術分享圖片

  ③由於數據庫的增刪改查常用,放在一個方法中。新建了類庫,把方法放入類庫中,在項目中需添加引用。  

  1 using Oracle.DataAccess.Client;
  2 using
System; 3 using System.Data; 4 using System.Collections.Generic; 5 using System.Configuration; 6 7 8 namespace Common 9 { 10 public class DBHelper 11 { 12 // static string connString = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=118.31.20.98)(PORT=33602))(CONNECT_DATA=(SERVICE_NAME=STUTEST)));Persist Security Info=True;User ID=WMSTEST;Password=WMSTEST;";
13 14 15 static string connString = ConfigurationManager.ConnectionStrings["Conn_DB"].ToString(); 16 17 /// <summary> 18 /// 查詢表數據(單表) 19 /// </summary> 20 /// <param name="sql">sql語句</param> 21 /// <returns></returns>
22 public static DataSet SelectData(string sql) 23 { 24 DataSet ds = new DataSet(); 25 try 26 { 27 using (OracleConnection conn = new OracleConnection(connString)) 28 { 29 //conn.Open(); 30 OracleCommand cmd = new OracleCommand(sql, conn); 31 OracleDataAdapter adapter = new OracleDataAdapter(cmd); 32 adapter.Fill(ds); 33 return ds; 34 } 35 } 36 catch (Exception e) 37 { 38 Console.Write(e); 39 } 40 return null; 41 } 42 43 //增改刪 44 /// <summary> 45 /// 執行sql 語句 46 /// </summary> 47 /// <param name="sql"></param> 48 /// <returns>返回影響的行數</returns> 49 public static Boolean AddUpDelData(string sql) 50 { 51 try 52 { 53 using (OracleConnection conn = new OracleConnection(connString)) 54 { 55 conn.Open(); 56 OracleCommand cmd = new OracleCommand(sql, conn); 57 int row = cmd.ExecuteNonQuery(); 58 conn.Close(); 59 if (row > 0) 60 { 61 return true; 62 } 63 } 64 } 65 catch (Exception e) 66 { 67 Console.Write(e); 68 } 69 return false; 70 } 71 72 public static Boolean ExeTransaction(List<string> sqlText) 73 74 { 75 76 using (OracleConnection conn = new OracleConnection(connString)) 77 { 78 conn.Open(); 79 OracleTransaction tran = conn.BeginTransaction(); 80 try 81 { 82 83 OracleCommand cmd = new OracleCommand(); 84 85 cmd.Transaction = tran; 86 87 cmd.Connection = conn; 88 89 foreach(string item in sqlText) 90 { 91 cmd.CommandText = item; 92 93 cmd.ExecuteNonQuery(); 94 } 95 tran.Commit(); 96 97 return true; 98 99 } 100 101 catch (Exception et) 102 103 { 104 tran.Rollback(); 105 return false; 106 } 107 108 finally 109 { 110 conn.Close(); 111 } 112 113 } 114 115 } 116 117 } 118 }

    <1>static string connString = ConfigurationManager.ConnectionStrings["Conn_DB"].ToString();

      獲取Web.config中配置的連接字符串,同上註釋的字符串可直接引用      

1     <connectionStrings>
2     <add name="Conn_DB" connectionString="Data Source=(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = 
3          (PROTOCOL = TCP)(HOST = 192.168.1.13)(PORT=8686)))(CONNECT_DATA =(SERVER = DEDICATED)
4          (SERVICE_NAME = STUTEST)));User Id=WMSTEST;Password=WMSTEST;" providerName="Oracle.DataAccess.Client" />
5   </connectionStrings>

    <2>插入,刪除,修改都可用一個方法,執行語句相同,返回true則表示有數據收到影響

    <3>事務,事務是多條SQL語句一起執行,如果一條錯誤,那麽將會回滾。這個在表之間主外鍵關系是有必要同時生效。只要把SQL語句放在List集合中,傳到方法中即可

    <4>查詢數據的到的DateSet,DateSet可以解析成一個Model對象類,也可以直接轉換成Json字符串,得到的結果

{"total":2,"rows":[{"PRODUCTID":"003","CREATETIME":"2018/7/18 15:49:29"},{"PRODUCTID":"003","CREATETIME":"2018/7/18 15:49:29"}]}

    <5>數據轉換的方法(此方法返回的數據可應用於bootstrap-table中的表格初始化數據)

 1 public string GetProductData()
 2         {
 3             Hashtable ht = new Hashtable();
 4             try
 5             {
 6                 string sql_getdata = "select * from WQY_PRODUCT";
 7                 string sql_gettotal = "select COUNT(*) from WQY_PRODUCT";
 8        
 9                 DataTable dt_data = DBHelper.SelectData(sql_getdata).Tables[0];
10                 DataTable dt_total = DBHelper.SelectData(sql_gettotal).Tables[0];
11 
12                 int total = int.Parse(dt_total.Rows[0][0].ToString());
13                 ht.Add("total", total);
14                 ht.Add("rows", dt_data);
15                 return JsonConvert.SerializeObject(ht);
16             }
17             catch (Exception ex)
18             {
19                 ht.Add("total", 0);
20                 ht.Add("rows", null);
21                 Console.Write(ex);
22                 string a = JsonConvert.SerializeObject(ht);
23                 return JsonConvert.SerializeObject(ht);
24             }
25         }

  

  <6>通過對DateTable或者DateSet進行循環即可取得每一個key對應的value值。

1                 for(int i = 0; i < dt_data.Rows.Count; i++)
2                 {
3                     string a = dt_data.Rows[0]["PRODUCTID"].ToString();
4                 }

ASP.NET C# 連接 Oracle數據庫增刪改查,事務