1、  Oralce官網 下載 安裝   ODTforVS2015_121025    重啟VS

2、項目引用 Oracle.ManagedDataAccess.dll

3、數據庫連接字符串: user id=xxxx;password=xxxx;data source=192.168.0.xxx:1521/orcl(數據庫名)

4、使用方法:

OracleConnection con = new OracleConnection();

con.ConnectionString = "user id=his3;password=his3;data source=192.168.1.237/ORCL";

con.Open();

OracleCommand cmd = new OracleCommand();

cmd.CommandType = System.Data.CommandType.Text;

cmd.CommandText = "select * from gy_yonghuxx";

cmd.Connection = con;

OracleDataAdapter da = new OracleDataAdapter();

da.SelectCommand = cmd;

DataSet ds = new DataSet();

da.Fill(ds);

con.Close();

da.Dispose();

cmd.Dispose();

con.Dispose();

注意:

在OleDbParameter 作為參數時,沒有SqlParameter那樣靈活,用SqlParameter時,在定義和賦值時的順序可以隨便寫,而OledbParmeter 則要求嚴格的順序,否則雖然不會報錯,但是可能會出現期望之外的情況如沒有執行或執行出錯。

工具類:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using Oracle.ManagedDataAccess.Client;

using System.Configuration;

using System.Data;

using System.Reflection;

namespace NCToOA

{

public class OracleHelper

{

#region 變量

///

/// 數據庫連接對象

///

private static OracleConnection _con = null;

public static string constr = ConfigurationManager.ConnectionStrings["OracleStr"].ToString();

#endregion

#region 屬性

///

/// 獲取或設置數據庫連接對象

///

public static OracleConnection Con

{

get

{

if (OracleHelper._con == null)

{

OracleHelper._con = new OracleConnection();

}

if (OracleHelper._con.ConnectionString == "")

{

OracleHelper._con.ConnectionString = OracleHelper.constr;

}

return OracleHelper._con;

}

set

{

OracleHelper._con = value;

}

}

#endregion

#region 方法

#region 執行返回一行一列的數據庫操作

///

/// 執行返回一行一列的數據庫操作

///

/// Oracle語句或存儲過程名

/// Oracle命令類型

/// Oracle命令參數數組

/// 第一行第一列的記錄

public static int ExecuteScalar(string commandText, CommandType commandType, params OracleParameter[] param)

{

int count = 0;

using (OracleHelper.Con)

{

using (OracleCommand cmd = new OracleCommand(commandText, OracleHelper.Con))

{

//try

//{

cmd.CommandType = commandType;

if (param != null)

{

cmd.Parameters.AddRange(param);

}

OracleHelper.Con.Open();

count = Convert.ToInt32(cmd.ExecuteScalar());

//}

//catch (Exception ex)

//{

// count = 0;

//}

}

}

return count;

}

#endregion

#region 執行不查詢的數據庫操作

///

/// 執行不查詢的數據庫操作

///

/// Oracle語句或存儲過程名

/// Oracle命令類型

/// Oracle命令參數數組

/// 受影響的行數

public static int ExecuteNonQuery(string commandText, CommandType commandType, params OracleParameter[] param)

{

int result = 0;

using (OracleHelper.Con)

{

using (OracleCommand cmd = new OracleCommand(commandText, OracleHelper.Con))

{

try

{

cmd.CommandType = commandType;

if (param != null)

{

cmd.Parameters.AddRange(param);

}

OracleHelper.Con.Open();

result = cmd.ExecuteNonQuery();

}

catch (Exception ex)

{

result = 0;

}

}

}

return result;

}

#endregion

#region 執行返回一條記錄的泛型對象

///

/// 執行返回一條記錄的泛型對象

///

/// 泛型類型

/// 只進只讀對象

/// 泛型對象

private static T ExecuteDataReader(IDataReader reader)

{

T obj = default(T);

try

{

Type type = typeof(T);

obj = (T)Activator.CreateInstance(type);//從當前程序集里面通過反射的方式創建指定類型的對象

//obj = (T)Assembly.Load(OracleHelper._assemblyName).CreateInstance(OracleHelper._assemblyName + "." + type.Name);//從另一個程序集里面通過反射的方式創建指定類型的對象

PropertyInfo[] propertyInfos = type.GetProperties();//獲取指定類型里面的所有屬性

foreach (PropertyInfo propertyInfo in propertyInfos)

{

for (int i = 0; i < reader.FieldCount; i++)

{

string fieldName = reader.GetName(i);

if (fieldName.ToLower() == propertyInfo.Name.ToLower())

{

object val = reader[propertyInfo.Name];//讀取表中某一條記錄里面的某一列

if (val != null && val != DBNull.Value)

{

if (val.GetType() == typeof(decimal) || val.GetType() == typeof(int))

{

propertyInfo.SetValue(obj, Convert.ToInt32(val), null);

}

else if (val.GetType() == typeof(DateTime))

{

propertyInfo.SetValue(obj, Convert.ToDateTime(val), null);

}

else if (val.GetType() == typeof(string))

{

propertyInfo.SetValue(obj, Convert.ToString(val), null);

}

}

break;

}

}

}

}

catch (Exception ex)

{

throw;

}

return obj;

}

#endregion

#region 執行返回一條記錄的泛型對象

///

/// 執行返回一條記錄的泛型對象

///

/// 泛型類型

/// Oracle語句或存儲過程名

/// Oracle命令類型

/// Oracle命令參數數組

/// 實體對象

public static T ExecuteEntity(string commandText, CommandType commandType, params OracleParameter[] param)

{

T obj = default(T);

using (OracleHelper.Con)

{

using (OracleCommand cmd = new OracleCommand(commandText, OracleHelper.Con))

{

cmd.CommandType = commandType;

cmd.Parameters.AddRange(param);

OracleHelper.Con.Open();

OracleDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);

while (reader.Read())

{

obj = OracleHelper.ExecuteDataReader(reader);

}

}

}

return obj;

}

#endregion

#region 執行返回多條記錄的泛型集合對象

///

/// 執行返回多條記錄的泛型集合對象

///

/// 泛型類型

/// Oracle語句或存儲過程名

/// Oracle命令類型

/// Oracle命令參數數組

/// 泛型集合對象

public static List ExecuteList(string commandText, CommandType commandType, params OracleParameter[] param)

{

List list = new List();

using (OracleHelper.Con)

{

using (OracleCommand cmd = new OracleCommand(commandText, OracleHelper.Con))

{

try

{

cmd.CommandType = commandType;

if (param != null)

{

cmd.Parameters.AddRange(param);

}

OracleHelper.Con.Open();

OracleDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);

while (reader.Read())

{

T obj = OracleHelper.ExecuteDataReader(reader);

list.Add(obj);

}

}

catch (Exception ex)

{

list = null;

}

}

}

return list;

}

#endregion

#endregion

}

}

oracle.manageddataaccess idataparameter,.net 通過ODP.NET Managed 連接Oracle數據庫相关推荐

  1. ngss for oracle,救命呀!c\s結構軟件,后台數據庫采用oracle,在制作安裝程序時候,難道必須要在客戶機上安裝oracle客戶端?...

    #9 Oracle 9i執行所需要的動態連結檔,執行環境TCP ora92\bin oci.dll oracle.key oraclient9.dll oracommon9.dll oracore9. ...

  2. oracle odp arraybindcount 极限,極限挑戰—C#+ODP 100萬條數據導入Oracle數據庫僅用不到1秒...

    .Net程序中可以通過ODP調用特性,對Oracle數據庫進行操作,今天來講一下數據批量插入的功能,所用技術不高不深,相信很多朋友都接觸過,小弟班門弄斧了,呵呵.這篇文章是上篇文章的續集,因為上一次試 ...

  3. rodbc 连接oracle,R語言 使用RODBC連接oracle數據庫

    使用R語言有多種包可以連接oracle數據庫,我今天在這里講一下使用使用RODBC連接oracle數據庫. 1. 如果你的本地是windows系統的話,你需要安裝oracle客戶端. 2. 然后需要在 ...

  4. 數據庫ORACLE轉MYSQL存儲過程遇到的坑~(總結)

    ORACLE數據庫轉MySQL數據庫遇到的坑 總結 最近在做Oracle轉mysql的工程,遇到的坑是真的多,尤其是存儲過程,以前都沒接觸過類似的知識,最近也差不多轉完了就總結一下.希望能幫到一些人( ...

  5. oracle缺少key xe.reg,【Oracle XE系列之一】Windows 7 64位安裝Oracle XE(32位)數據庫(REG_XE報錯、字符集、修改8080端口等)...

     一.安裝 1.去Oracle官網下載XE版的安裝包(貌似Windows只有32位的,Linux只有6位的),解壓. 2.雙擊Setup.exe,啟動安裝程序,在選在路徑那里不要點下一步,否則會報 ...

  6. oracle估算大小,Oracle 估算數據庫大小的方法

    一.說明 一網友問我將一個查詢的結果集存放到臨時表里,如果估算臨時表的大小,當時想的方法是通過統計block來計算.后來想,此方法的操作性也不是很高. 最好是能在查詢操作執行之前就能估算出大小. 查看 ...

  7. jpa oracle mysql,JPA-Oracle-Mysql連接數據庫配置

    //...省略datasouce class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" ...

  8. 远程连接oracle01017,連接Oracle遠程數據庫錯誤:ORA-12541,ORA-12514,ORA-01017的解決方法!...

    1.出現如下錯誤:ORA-12541:TNS:no listener,如下圖所示: 錯誤原因是我們沒有開啟Listener監聽器服務,解決方法是在服務中開啟這個服務,如下圖所示. 2.出現如下錯誤:O ...

  9. oracle 性能优化 常用,Oracle數據庫常用性能優化

    1. 查兩張以上表時,把記錄少的放在右邊 2. WHERE子句中的連接順序 ORACLE采用自上而下的順序解析WHERE子句,根據這個原則,那些可以過濾掉最大數量記錄的條件應寫在WHERE子句最后. ...

最新文章

  1. Spring Batch 介绍
  2. PHP date函数参数详解
  3. 第一阶段_第二部分_功能介绍
  4. UIWindow的windowLevel详解
  5. REST资源何时应获得其自己的地址?
  6. firefox android 去更新,Android版Firefox Beta发布更新
  7. DataDirectory是什么?
  8. 改写教科书!人类细胞可将RNA序列写入DNA,生命基本定律中心法则遭挑战!
  9. ThinkPHP验证码不能显示如何解决
  10. 【华为云技术分享】自动网络搜索(NAS)在语义分割上的应用(一)
  11. 【文献学习+方便自己使用】二阶一致性理论
  12. php发送http put/patch/delete请求
  13. 字节跳动1/3员工不支持取消大小周!库克称iPhone将采用可回收材料生产;清华博士接亲被要求现场写代码|极客头条...
  14. php的数组操作,PHP的数组操作
  15. JavaScript 物体的运动
  16. 软件测试肖sir__简历模板制作
  17. 再说市场资金流向问题
  18. 计算机三级网络技术考过指南
  19. java 行政区划代码 民政部 json
  20. zabbix短信网关使用了中国网建SMS短信通

热门文章

  1. 关于在树莓派内存卡配置上遇到的坑
  2. vue 项目根据多条件筛选数组
  3. logo是啥_标志logo的定义是什么标志logo有什么意义?
  4. transferto方法的应用_SpringMVC的 transferTo使用
  5. C语言中的NULL到底是什么?又不是什么?有什么用?怎么用?
  6. android定义 task,Android中AsyncTask的基本用法
  7. 学妹问我:OpenJDK是什么?作为师哥,必须万字详解屁颠屁颠奉上
  8. 网页调用php网页,在HTML网页中利用js调用php的内容_PHP教程
  9. Mac下搭建php开发环境教程
  10. 使用ModelMapper的一次踩坑经历