一、知識介紹 ①ASP.NET 使用的是MVC模式,開發工具Visual studio ,語言C# ②Oracle是比較重型的資料庫,這裡主要介紹連接資料庫,對數據進行具體的使用 ③Visual Studio連接資料庫都是需要dll文件,方法相似。 二、步驟 ①新建一個ASP項目 ②右擊項目或引用, ...
一、知識介紹
①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 }