电脑上不安装Oracle时,C# 调用oracle数据库,Oracle客户工具 【转载】
http://www.cnblogs.com/jiekzou/p/5047850.html
Oracle的安装包通常都比较大,安装又比较费时,而且如果安装过程中不幸出错,各种蛋疼,即便是安装过N遍的老手,有时候安装起来也觉得挺烦。而工作中,通常服务器上面安装oracle就可以了,我们本地电脑只需要安装一个oracle客户端,然后连接到服务器就可以了。
Oracle 轻量级客户端我推荐使用Navicat For Oracle,只有17M。
1、下载以下几个dll,我这里使用的是oracle11g,这几个DLL的下载地址:http://pan.baidu.com/s/1kU1JafX
2、将其拷贝到项目中,设置dll属性为“复制到输出目录”为“始终复制”
3、项目中添加Oracle.DataAccess.dll的引用
4、创建oracle操作类ORacleDBHelp

/* ==============================================================================
* 功能描述:ORacleDBHelp
* 创 建 者:Zouqj
* 创建日期:2015/9/9 14:30:22
==============================================================================*/
using System;
using System.Collections.Generic;
using System.Text;
using System.Configuration;
using System.Data;
using System.Threading;
using System.Transactions;
using Oracle.DataAccess.Client;
using Oracle.DataAccess.Types;
using Oracle.DataAccess;
using DBHelper.Interface; namespace DBHelper
{
public class ORacleDBHelp : ITransDB
{
private static OracleConnection conn;
private bool IsTran = false;
private OracleConnection TranConn;
private OracleCommand cmd;
private OracleTransaction Transaction; #region 事务处理方法
/// <summary>
/// 开启全局事务处理
/// </summary>
public void BeginTransaction()
{
TranConn = new OracleConnection(ConfigurationManager.ConnectionStrings["OracleConnection"].ConnectionString);
if (TranConn.State == ConnectionState.Closed)
{
TranConn.Open();
}
Transaction = TranConn.BeginTransaction();
cmd = new OracleCommand("", TranConn);
cmd.CommandTimeout = 600;
IsTran = true;
} /// <summary>
/// 提交全局事务处理
/// </summary>
public void Commit()
{
cmd.Transaction.Commit();//事务提交
Transaction.Dispose();
cmd.Dispose();
TranConn.Close();
TranConn.Dispose();
} /// <summary>
/// 回滚全局事务处理
/// </summary>
public void Rollback()
{
if (IsTran)
{
cmd.Transaction.Rollback();//事务回滚
Transaction.Dispose();
cmd.Dispose();
TranConn.Close();
TranConn.Dispose();
}
}
/// <summary>
/// 执行不带参数sql语句,返回所影响的行数
/// </summary>
/// <param name="cmdstr">增,删,改sql语句</param>
/// <returns>返回所影响的行数</returns>
public int TranExecuteNonQuery(string cmdText)
{
int count;
try
{
cmd.CommandText = cmdText;
cmd.CommandTimeout = 600;
if (cmd.Connection.State == ConnectionState.Closed)
{
cmd.Connection.Open();
}
count = cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
throw new Exception(ex.Message.ToString().Trim());
}
return count;
}
#endregion #region 建立数据库连接对象
/// <summary>
/// 建立数据库连接
/// </summary>
/// <returns>返回一个数据库的连接OracleConnection对象</returns>
public static OracleConnection init()
{
try
{
if (conn == null)
{
conn = new OracleConnection(ConfigurationManager.ConnectionStrings["OracleConnection"].ToString().Trim());
}
if (conn.State != ConnectionState.Open)
{
conn.Open();
}
}
catch (Exception e)
{
try
{
Thread.Sleep(5000);
conn = new OracleConnection(ConfigurationManager.ConnectionStrings["OracleConnection"].ToString().Trim());
if (conn.State != ConnectionState.Open)
{
conn.Open();
}
}
catch (Exception)
{
throw new Exception(e.Message.ToString().Trim());
}
}
return conn;
}
#endregion /// <summary>
/// 执行不带参数sql语句,返回所影响的行数
/// </summary>
/// <param name="cmdstr">增,删,改sql语句</param>
/// <returns>返回所影响的行数</returns>
public static int ExecuteNonQuery(string cmdText)
{
int count;
OracleCommand ocmd = null;
try
{
init();
ocmd = new OracleCommand("", conn);
ocmd.CommandTimeout = 600;
ocmd.CommandText = cmdText;
count = ocmd.ExecuteNonQuery();
}
catch (Exception ex)
{
throw new Exception(ex.Message.ToString().Trim());
}
return count;
}
/// <summary>
/// 执行不带参数sql语句,返回一个从数据源读取数据的OracleDataReader对象
/// </summary>
/// <param name="cmdstr">相应的sql语句</param>
/// <returns>返回一个从数据源读取数据的OracleDataReader对象</returns>
public static DataTable GetDataTable1(string cmdText)
{
OracleDataReader reader;
OracleCommand ocmd = null;
DataTable dt = new DataTable();
try
{
init();
ocmd = new OracleCommand("", conn);
ocmd.CommandTimeout = 600;
ocmd.CommandText = cmdText;
ocmd.CommandTimeout = 600;
reader = ocmd.ExecuteReader();
dt.Load(reader);
reader.Dispose();
}
catch (Exception ex)
{
throw new Exception(ex.Message.ToString().Trim());
}
return dt;
}
}
}

ITransDB接口

/* ==============================================================================
* 功能描述:ITransDB
* 创 建 者:Zouqj
* 创建日期:2015/9/9 14:31:32
==============================================================================*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace DBHelper.Interface
{
public interface ITransDB
{
void BeginTransaction();
int TranExecuteNonQuery(string sql);
void Commit();
void Rollback();
}
}

现在可以通过C#来直接调用oracle操作了。
接下来,通过Oracle客户端连接到Oracle服务器
安装完Navicat For Oracle后,我们电脑上面没有安装oracle,将下载的dll拷贝到Navicat For Oracle的安装目录,我电脑上面是:D:\Program Files (x86)\PremiumSoft\Navicat for Oracle\instantclient_10_2\
然后配置Navicat For Oracle,“工具”——“选项”
这个时候,Navicat For Oracle就可以连接服务器上面的Oracle数据库了。
电脑上不安装Oracle时,C# 调用oracle数据库,Oracle客户工具 【转载】的更多相关文章
- 安装站点时出现“连接数据库出现数据库server或登录password无效,无法连接数据库,请又一次设定”解决方法
在安装站点时出现 "连接数据库出现数据库server或登录password无效,无法连接数据库,请又一次设定" 可是数据库username和password是正确的,在serv ...
- 电脑上不安装Oracle时,C# 调用oracle数据库,Oracle客户工具
Oracle的安装包通常都比较大,安装又比较费时,而且如果安装过程中不幸出错,各种蛋疼,即便是安装过N遍的老手,有时候安装起来也觉得挺烦.而工作中,通常服务器上面安装oracle就可以了,我们本地电脑 ...
- 一台电脑上同时安装python2和python3
被python2的编码问题整的快晕了,python3对编码问题解决的不错 所以想安装下python3,但由于目前企业大多还是用python2,所以不想卸载2,让python2和python3共存. 本 ...
- 在同一台电脑上同时安装Python2和Python3
目前Python的两个版本Python2和Python3同时存在,且这两个版本同时在更新与维护. 到底是选择Python2还是选择Python3,取决于当前要使用的库.框架支持哪个版本. 例如:HTM ...
- 在windows系统电脑上同时安装python2.x和python3.x版本
在同一个电脑机子(windows系统)上安装同时安装python2.x和python3.x版本. 一.python2.x和python3.x安装 步骤1:在python官网(https://www.p ...
- Ubuntu Server 上在安装Nginx时执行./confgiure后提示:C compiler cc is not found
场景 Ubuntu Server 16.04 LTS上怎样安装下载安装Nginx并启动: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/detai ...
- 使用C#检测电脑上是否安装某软件
private void button2_Click(object sender, EventArgs e) { try { string app = "chrome.exe"; ...
- 在同台电脑上再次安装MySql需要注意的事项
今天安装了一下mysql,出现的问题主要是在最后一步: msyql 安装到最后一步 start service 错误解决方法 1, 到控制面板里面先把 mysql 删除 . 2. 到 c 盘 C:\P ...
- Mac电脑上一款非常时尚高清的动态壁纸Living Wallpaper HD
很多朋友Mac电脑上都喜欢用动态壁纸,Living Wallpaper HD是本人尝试的一款非常不错的高清动态壁纸.有时钟.天气等各种组建,非常时尚美观. Living Wallpaper HD下载地 ...
随机推荐
- spring的官方文档地址
https://docs.spring.io/spring/docs/current/spring-framework-reference/
- Java语法基础学习DaySix
一.JavaBean——可重用组件 1.JavaBean是指符合以下标准的Java类: (1)类是公共的 (2)有一个无参的公共的构造器 (3)有属性,且有对应的get.set方法 2.好处 用户可以 ...
- 原生js封装tap
// tap事件封装function tap(obj, callBack){ if(typeof obj != 'object') return; // 变量 var startTime = 0; / ...
- <YARN><MRv2><Spark on YARN>
MRv1 VS MRv2 MRv1: - JobTracker: 资源管理 & 作业控制- 每个作业由一个JobInProgress控制,每个任务由一个TaskInProgress控制.由于每 ...
- 手机号的 DES-ECB 加密/解密
前言:公司的手机号加密更换了加密方法,这次改成 DES-ECB 加密了 代码操作 # -*- coding:utf-8 -*- import base64 import json from Crypt ...
- 手机号的 AES/CBC/PKCS7Padding 加解密
前言:接口中上次的手机号码和密码是传入的加密的,模拟自动化的时候也需要先对数据进行加密 1.各种语言实现 网上已经各种语言实现好的AES加密,可以点击查看:http://outofmemory.cn/ ...
- XML Schema——笔记整理
什么是 XML Schema? 定义可出现在文档中的元素 定义可出现在文档中的属性 定义哪个元素是子元素 定义子元素的次序 定义子元素的数目 定义元素是否为空,或者是否可包含文本 定义元素和属性的数据 ...
- menson 使用方法
参考:http://mesonbuild.com/Running-Meson.html#configuring-the-source https://github.com/google/googlet ...
- [转][译] Closures in Lua - Lua中的闭包
http://www.cnblogs.com/plodsoft/p/5900270.html?utm_source=tuicool&utm_medium=referral 原文:(PDF) . ...
- 2.9 iframe
2.9 iframe 一.frame和iframe区别Frame与Iframe两者可以实现的功能基本相同,不过Iframe比Frame具有更多的灵活性. frame是整个页面的框架,iframe是内嵌 ...