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

来源:https://www.cnblogs.com/xqz0618/archive/2018/08/02/Oracle.html
-Advertisement-
Play Games

一、知識介紹 ①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                 }

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • ZedGraph設置輔助線 1.一般來說ZedGraph設置參考線可以用 ZedGraph對象.YAxis.MajorGrid.IsVisible = True '水平參考線 ZedGraph對象.XAxis.MajorGrid.IsVisible = True '垂直參考線 2.就是通過在ZedG ...
  • Jquery AJAX POST與GET之間的區別 Jquery AJAX POST與GET之間的區別 GET 就是一個相同的URL只有一個結果,瀏覽器直接就可以拿出來進行獲取,比如抓取介面get方式的內容,或者說直接獲取網站源碼,可以使用get進行抓取,所以說get主要是用來獲取/抓取。 Ajax ...
  • 1. Swagger是什麼? Swagger 是一個規範和完整的框架,用於生成、描述、調用和可視化 RESTful 風格的 Web 服務。總體目標是使客戶端和文件系統作為伺服器以同樣的速度來更新。文件的方法,參數和模型緊密集成到伺服器端的代碼,允許API來始終保持同步。Swagger 讓部署管理和使 ...
  • 0.簡介 事件匯流排就是訂閱/發佈模式的一種實現,本質上事件匯流排的存在是為了降低耦合而存在的。 從上圖可以看到事件由發佈者發佈到事件匯流排處理器當中,然後經由事件匯流排處理器調用訂閱者的處理方法,而發佈者和訂閱者之間並沒有耦合關係。 像 Windows 本身的設計也是基於事件驅動,當用戶點擊了某個按鈕,那 ...
  • 在我們平時項目中經常會遇到定時任務,比如定時同步數據,定時備份數據,定時統計數據等,定時任務我們都知道使用Quartz.net,此系列寫的也是Quartz,但是在此之前,我們先用其他方式做個簡單的定時任務進行入門。 首先呢,我們現在自己先寫一個簡單的定時迴圈任務,話不多說,直接上代碼: 第一步:創建 ...
  • 專為解答C#初級問題 QQ 群 731738614 ...
  • 本文是為了學習ABP的使用,是翻譯ABP官方文檔的一篇實戰教程,我暫時是優先翻譯自己感興趣或者比較想學習的部分,後續有時間希望能將ABP系列翻譯出來,除了自己能學習外,有可能的話希望幫助一些英文閱讀能力稍微差一點的同學(當然我自己也不一定翻譯的多好,大家共同學習)。 其實這篇文章也花了我一些時間,突 ...
  • 本文主要是對 ".NET Core開發日誌——Middleware" 的補遺,但是會從看起來平平無奇的RequestDelegate開始敘述,所以以其作為標題,也是合情合理。 RequestDelegate是一種委托類型,其全貌為 ,MSDN上對它的解釋,"A function that can p ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...