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

     

  • 相关阅读:
    Sass-unitless()函数
    Sass函数:unit()函数
    Sass函数:Introspection 函数 -type-of()
    Sass函数-值列表index
    Sass函数--列表函数append
    Sass函数-join()函数
    Sass函数:列表函数nth
    Sass函数:值列表函数length
    Sass函数:random()函数
    学习笔记77—Iphone集
  • 原文地址:https://www.cnblogs.com/xqz0618/p/Oracle.html
Copyright © 2020-2023  润新知