ASP.NET C# 连接 Oracle数据库增删改查,事务


一、知识介绍

  ①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                 }

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM