一、知识介绍
①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 }