C#访问ORALCE数据库
随着时间的推移知识也在更新,原来可用的技术也会被淘汰或更新。
framework4.0开始不再支持System.Data.OracleClient了,但是令人欣慰的是ORACLE公司自己出了一个Oracle.ManagedDataAccess链接库。
下载地址:http://files.cnblogs.com/files/weipt/OracleBase.rar
添加引用之后就可以在c#中使用了。
1.连接字符串如下
<connectionStrings>
<add name="ConnectionString" connectionString="server=server;uid=sa;pwd=sa;database=dy_db;"/>
<add name="ConnectionString_Oralce" connectionString="Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.3.254)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=tdc)));Persist Security Info=True;User ID=tdc;Password=tdc;"/>
</connectionStrings>
不用建立tns监听文件,不用安装庞大的oracle数据库客户端
2.建立公共的数据访问方法
/// <summary>
/// 执行SQL语句,返回影响的记录数
/// </summary>
/// <param name="SQLString">SQL语句</param>
/// <returns>影响的记录数</returns>
public static int ExecuteSql(string SQLString)
{
using (OracleConnection connection = new OracleConnection(connectionString))
{
using (OracleCommand cmd = new OracleCommand(SQLString,connection))
{
try
{
connection.Open();
int rows=cmd.ExecuteNonQuery();
return rows;
}
catch(OracleException E)
{
connection.Close();
throw new Exception(E.Message);
}
}
}
}
/// <summary>
/// 执行SQL语句,返回影响的记录数
/// </summary>
/// <param name="SQLString">SQL语句</param>
/// <returns>影响的记录数</returns>
public static int ExecuteSql(string SQLString,params OracleParameter[] cmdParms)
{
using (OracleConnection connection = new OracleConnection(connectionString))
{
using (OracleCommand cmd = new OracleCommand())
{
try
{
PrepareCommand(cmd, connection, null,SQLString, cmdParms);
int rows=cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return rows;
}
catch(OracleException E)
{
throw new Exception(E.Message);
}
}
}
}
/// <summary>
/// 执行查询语句,返回DataSet
/// </summary>
/// <param name="SQLString">查询语句</param>
/// <returns>DataSet</returns>
public static DataSet Query(string SQLString)
{
using (OracleConnection connection = new OracleConnection(connectionString))
{
DataSet ds = new DataSet();
try
{
connection.Open();
OracleDataAdapter command = new OracleDataAdapter(SQLString,connection);
command.Fill(ds,"ds");
}
catch(OracleException ex)
{
throw new Exception(ex.Message);
}
return ds;
}
}
3.使用时和sqlserver不同的地方
1>如果采用sql字符串查询,那么查询语句要遵循ORACLE标准,日期格式要用
to_date('2017-05-24 12:12:12','yyyy-mm-dd hh24:mi:ss')
2>不支持top关键字等关键字
3>如果用传参执行的化,不用转换日期格式,但是不是@了,而是:冒号
/// <summary>
/// 更新一条数据
/// </summary>
public bool Update(OMaticsoft.Model.MDEVICECRUNTIME model)
{
StringBuilder strSql=new StringBuilder();
strSql.Append("update DEVICECRUNTIME set ");
strSql.Append("PARAVALUE=:PARAVALUE,");
strSql.Append("RECEIVETIME=:RECEIVETIME");
strSql.Append(" where DEVICEID=:DEVICEID and RESNAME=:RESNAME");
OracleParameter[] parameters = {
new OracleParameter("PARAVALUE", OracleDbType.NVarchar2,),
new OracleParameter("RECEIVETIME", OracleDbType.Date),
new OracleParameter("DEVICEID", OracleDbType.Int32,),
//new OracleParameter("RUMTIMEID", OracleDbType.Long,4),
new OracleParameter("RESNAME", OracleDbType.NVarchar2,)};
parameters[].Value = model.PARAVALUE;
parameters[].Value = model.RECEIVETIME;
parameters[].Value = model.DEVICEID;
//parameters[3].Value = model.RUMTIMEID;
parameters[].Value = model.RESNAME; int rows=DbHelperOra.ExecuteSql(strSql.ToString(),parameters);
if (rows > )
{
return true;
}
else
{
return false;
}
}
C#访问ORALCE数据库的更多相关文章
- linux 环境下部署 Asp.Net Core 项目 访问 oralce 数据库
1.ASP.NET Core 是一个跨平台的高性能开源框架,可以部署到Linux上,那项目部署在Linux上有哪些好处呢? 1.linux硬件需求小,大部分版本免费,成本低. 2.linux的用户管理 ...
- Oralce数据库的优化
Oralce数据库的优化(面试必问) (1) 选择最有效率的表名顺序(只在基于规则的优化器中有效):ORACLE 的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 ...
- Qt5 开发 iOS 应用之访问 SQLite 数据库
开发环境: macOS 10.12.1 Xcode 8.1 Qt 5.8 iPhone 6S+iOS 10.1.1 源代码: 我在 Qt 程序里指定了数据库的名称来创建数据库,在 Win10.An ...
- java文件来演示如何访问MySQL数据库
java文件来演示如何访问MySQL数据库. 注:在命令行或用一个SQL的前端软件创建Database. 先创建数据库: CREATE DATABASE SCUTCS; 接着,创建表: CREATE ...
- 如何配置网络使得宿主机能够访问VM数据库?
https://www.zhihu.com/question/23955166 背景:公司内外网区分,不能同时上,局域网内得手动切换两个网络,分别访问外网或者内网,ip是动态获取的.现在本机上装有vm ...
- .net(C#)访问Oracle数据库的几种免安装组件的对比
Oracle 数据存取组件(ODAC) 库为Borland Delphi,C++ Builder 以及 Kylix提供了一些非可视化的组件.它们用来存取Oracle关系数据库系统.与BDE类似, OD ...
- PHP访问MySql数据库介绍
在网站后台,经常要与数据库打交道.本文介绍如何使用XAMPP来管理MySql数据库及如何用PHP来访问MySql数据库. 一.使用XAMPP来管理MySql数据库 首先使用XAMPP打开MySql的管 ...
- VS2010添加类失败问题,弹出错误框,提示 CodeModel操作失败,无法访问标记数据库
我在使用VS2010添加类的时候,会弹出一个错误框,提示 CodeModel操作失败,可以无法访问标记数据库 英文版是 CodeModel operation failed,Possibly cann ...
- C#访问postgresql数据库
最近开始做C#的DotNet的工作,因为对PostgreSQL数据库比较有兴趣,所以自己研究了一下如何访问PostgreSQL的 数据库的问题. 1.为了访问PostgreSQL数据库,需要从pgfo ...
随机推荐
- python修行:练习购物车
product_list = [ ('Iphone',5800), ('Mac Pro',9800), ('Bike',800), ('Watch',10600), ('Coffee',31), (' ...
- XMLHttpRequest API 使用指南
一.实例化 XMLHttpRequest 对象 使用 Ajax API 的第一件事情就是实例化 XMLHttpRequest 对象. var xhr = new XMLHttpRequest(); 二 ...
- python select epoll poll的解析
select.poll.epoll三者的区别 select select最早于1983年出现在4.2BSD中,它通过一个select()系统调用来监视多个文件描述符的数组(在linux中一切事物皆文件 ...
- Opencv4android的Android Studio项目配置及实例下载
因为软件竞赛的项目会用到Opencv fo rAndroid,所以就研究了一下如何在Android Studio上配置Opencv4Android 环境概述: Android Studio 2.3 O ...
- Spring事务管理的实现方式:编程式事务与声明式事务
1.上篇文章讲解了Spring事务的传播级别与隔离级别,以及分布式事务的简单配置,点击回看上篇文章 2.编程式事务:编码方式实现事务管理(代码演示为JDBC事务管理) Spring实现编程式事务,依赖 ...
- 构造函数与普通函数的区别还有关于“new”操作符的一些原理
有一种创建对象的方法叫做工厂模式,例如: function person(name,age){ var o=new Object(); o.name=name; o.age=age; return o ...
- redis 字符串
redis 字符串 概述 redis 没有使用 c 语言风格的字符串表示(以 "\0" 作为结尾), 而是使用自定义的 sds 结构 字符串结构 定义位置 (src/sds.h) ...
- Eclipse实现图形化界面插件-vs4e
vs4e插件下载地址:http://visualswing4eclipse.googlecode.com/files/vs4e_0.9.12.I20090527-2200.zip 下载完成后,解压,然 ...
- stm32中的延时函数
//粗延时函数,微秒 void delay_nus(u16 time) { u16 i=0; while(time--) { i=10; //自己定义 while(i--) ; } } //毫秒级的 ...
- linux下编译安装nginx
1.首先下载稳定版nginx1.10.2 使用wget命令下载 wget http://nginx.org/download/nginx-1.10.2.tar.gz 2.然后解压 tar -zxvf ...