VC++连接 Oracle技术详解
19.5 Oracle中嵌入式SQL的编译运行
利用PROC,在Visual C++环境下开发数据库程序的方法Visual C++6.0 和Oracle9i版为例
19.5.1 嵌入式SQL代码
该实例在C语言中嵌入SQL语句
在myora实例Scott中创建一个表mystudent 向其中插入数据并依次读取显示数据
具体代码如下:c语言实现
文本编辑器编辑,并保存为esqlc.pc
19.5.2预编译文件
PROC在VC中开发Oracle库接口时,需要用到以下3个特殊文件
可以直接运行PROCUI.EXE 预编译文件,也可以将PROC集成到Visual C++6.0环境中,直接在C/C++环境中预编译应用程序然后进行编译和链接,最终生成可执行程序
将PROC集成到VC环境中
1.新建一个Win32 Console Application ,单机菜单中:工具—定制—工具,如图建立
命令中的路径视实际的安装路径而定
2.然后,就可以预编译esqlc2.pc转换为esql2.c的C程序源文件将PROC集成到VC环境
中后,可以在工具栏下找到PROC项,单击,弹出PROC预编译对话框,单击+按钮,添加项目,这里需要我们我们不断→预编译→改错,直至预编译成功。
3.预编译成功对话框左边栏中显示“对号”,在输入文件路径中产生一个和源文件同名的.c
文件。
19.5.3设置Visual C++6.0编译环境
为了顺利完成编译链接,需要将Oracle提供的“头文件”和“库文件”增加到VC环境中,步骤如下:
在Visual C++6.0中,单击菜单工具→选项→目录→Include Files→添加路径填入
D:\oracle\ora90\precomp\public 单击OK
最容易忽略一步:
将运行库文件加入工程的步骤如下:
1.在Visual C++ 6.0中,单击菜单Project→Add To Project→Files选项,弹出Insert Files对
话框。
2.将文件类型改为“所有文件”,路径选为D:\oracle\ora90\precomp\lib\msvc 选择
oraSQL9.LIB文件单击OK按钮,完成将运行库文件加入工程。
19.5.4编译程序运行程序
在创建的test2 工程中选择菜单工程→增加到工程→文件选择.c文件添加到次工程中
然后编译运行
最后在pl/sql中select * from tab; //查看是否有mystudent表
select * from mystudent; //查看表中的记录
出现的问题:
缺少dll动态库文件
作者邮箱renxixinguan@。
VC++6.0访问Oracle数据库技术
文献标识码 : A
引 言
随着计算机技术的发展 , 各种功能 的开发软件工具在社 会各领 域的应 用 已非常广 泛 。V + 6 0作 为强大 的开发 工 C +. 具 ,它有 良好的用户界面 , 提供 对面 向对象 的支持 ,有功 能 强 大 的 Ap i a d 应 用 程序 向导 ) C a s i a d 类 向 pWzr ( 和 ls W z r (
维普资讯
Mircmp tr p l ain o.4 N . ,0 8 coo ue A p c t s 12 , o6 2 0 i o V
文章 编 号 : 10 — 5 X(0 8 6 0 6 — 2 777 20)-030 0
学习 园地
微 型 电脑 应 用
源 中提取 的结果记录集并对其进行操作 。 它通 过 S 语句返 L O 回,可 以对表和视 图进行查询或存储 。
2 数据 库 访问 技术
问环境 的集 合对象 , 存储 了数据库连接及所使用的驱动程序 信息。 注册数据源可 以在控制面板中数据管理里面的数据源
基金项 目:基础 预研 ( I 2 0 A 0 ) H 4 0 6 O 1 作者 简介 :梁 小亮 ,西 北工 业大 学 电子信 息学 院 ,硕 士研 究 生, 陕西 西 安 70 7 102
首先进行物理连接并设置 c s的 I / P地址 。在 客户机上
Vc++6.0通过ODBC操作Oracle数据库
Vc++6.0通过ODBC操作Oracle数据库Visual C ++6.0 中提供了CDatabase 、CRecordset 、CRecordView、CDBException、Clong Binary 和CFieldExchange 6 个类,这些类封装了ODBC SDK函数,从而使用户可以无需了解SDK函数就可以很方便地操作支持ODBC 的数据库。
Vc++6.0通过ODBC操作数据库(如sqlsever、Access)代码可以直接移植到操作Oracle中,以下这段代码就是一个Vc++6.0连接sqlsever的代码,连接Oracle数据库时,如不需验证,在SQLConnect()加入用户名和密码就可以了,如scott tiger 其连接数据库的过程,就是通过ODBC连接的一般方法// 定义环境句柄、连接句柄、语句句柄SQLHENV henv;SQLHDBC hdbc;SQLHSTMT hstmt;// 定义返回值SQLRETURN rtcode;//m_strSqlStmt="123456";// 分配环境句柄rtcode = SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&henv);if(rtcode == SQL_SUCCESS || rtcode == SQL_SUCCESS_WITH_INFO){// 设置环境属性(ODBC版本号)rtcode = SQLSetEnvAttr(henv,SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ ODBC3,0);if(rtcode == SQL_SUCCESS || rtcode == SQL_SUCCESS_WITH_INFO){// 分配连接句柄rtcode = SQLAllocHandle( SQL_HANDLE_DBC, henv, &hdbc);if(rtcode == SQL_SUCCESS || rtcode == SQL_SUCCESS_WITH_INFO){// 设置连接属性(登录超时 = 10s)SQLSetConnectAttr(hdbc,SQL_ATTR_LOGIN_TIMEOUT,(void* )10,0);// 连接数据源LPTSTR lpstrDsn = m_strDB.GetBuffer(m_strDB.GetLength());rtcode = SQLConnect(hdbc,(SQLCHAR*)lpstrDsn,SQL_NTS,(SQLCHAR*)"scott",SQL_NTS,(SQLCHAR*)"tiger",SQL_NTS);if(rtcode == SQL_SUCCESS || rtcode == SQL_SUCCESS_WITH_INFO){// 分配语句句柄rtcode = SQLAllocHandle(SQL_HANDLE_STMT,hdbc,&hstmt);if(rtcode == SQL_SUCCESS || rtcode == SQL_SUCCESS_WITH_INFO){/******** 查询数据 ********/// 定义参数SQLCHARsqlSelList[SEL_LIST_LEN],sqlTabList[SEL_TAB_LEN],sqlConList[SEL _CON_LEN];// 获得参数CString strList = _GetSelList();CString strTab = _GetSelTab();CString strCon = _GetSelCon();strcpy((char*) sqlSelList ,strList);strcpy((char*) sqlTabList ,strTab);strcpy((char*) sqlConList ,strCon);// 直接执行char str[2000];strcpy( str, "SELECT ");strcat( str, strList);strcat( str, " FROM ");strcat( str, strTab);if( !strCon.IsEmpty()){strcat( str, " WHERE ");strcat( str, strCon);}rtcode = SQLExecDirect( hstmt, (SQLCHAR*)str,SQL_NTS);m_strSqlStmt = CString(str);UpdateData(FALSE);// 释放语句句柄SQLFreeHandle(SQL_HANDLE_STMT,hstmt);}// 断开连接SQLDisconnect(hdbc);}// 释放连接句柄SQLFreeHandle(SQL_HANDLE_DBC,hdbc);}}// 释放环境句柄SQLFreeHandle(SQL_HANDLE_ENV,henv);。
VC++和Oracle数据库的三种连接方式
1、VC++采用OO4O方式连接Oracle数据库COM(Component Object Model)是微软在基于Window平台上,实现软件的构件化设计和软件再利用的一种技术策略。
OO4O是基于组件对象模型的技术,能和Oracle数据库进行无缝连接和优化访问的一组编程对象的集合。
自上而下层次关系如下:Visual C++oracle data control oracle c++ class library automation controllersmicrosoft oleoracle object serveroraclient oradynasetorasession orasql stmtoraconnection orafieldoradatabase oraparameterOracle Call Interface(OCI)SQL * NET and NetworkOracle DBMS2、Visual C++ 采用ODBC方式连接Oracle数据库ODBC(Open Database Commectivity 开放数据库连接)是解决异种数据库访问的问题,减少了数据库访问的复杂性,提高了数据库的独立性。
在微软封装ODBC功能的MFC类:CDatabase CRecordset CRecordView CDBException。
用ODBC开放的程序Microsoft驱动程序管理ODBC驱动程序1 ODBC驱动程序2 ODBC驱动程序3数据库1 数据库2 数据库33、采用Pro*C方式连接Oracle数据库Pro*C是Oracle公司提供的在第三代高级程序设计语言中嵌入SQL语句来访问数据库的一套预编译程序,利用Oracle公司提供的工具生成高级语言格式的源程序,然后就可以将这些源程序加入用户的程序中。
4、三种方法的比较(1)3中方法的数据访问应用程序接口特性:OO4O在开放性、可视化开放、Oracle 的连接能力方面比较好,但只适用于Oracle数据库。
oracle数据库连接方法
oracle数据库连接方法
Oracle数据库的连接方法有多种,以下列举两种常见的方式:
方法一:
1. 找到tnsnames.ora文件,打开后可以看到类似红色框中的配置。
2. 复制一份配置,放到tnsnames.ora文件底部,然后对其进行修改。
可以根据自己的情况设置四个位置:自定义数据库名、根据远程数据库地址修改地址、根据远程数据库端口号修改端口号、根据远程数据服务名修改服务名。
3. 修改完成后保存,再次打开PLSQL,只要填写正确的用户名密码,并选择刚刚自定义的数据库名,点击确定就可以连接数据库了。
方法二:
1. 从开始菜单中找到Oracle的Net Manager工具,单击打开。
2. 在Net Manager中,找到服务命名,可以看到刚刚配置的数据库名(服务命名),里面的配置和刚刚在tnsnames.ora文件修改的是一样的。
3. 在Navicat中改完重启后,再次打开Navicat,按照上图操作进入Oracle
新建连接界面。
C#连接Oracle数据库(三种方式:OracleClient、ODBC、OLEDB)
C#连接Oracle数据库(三种方式:OracleClient、ODBC、OLEDB)1、OracleClient//基于.NET 2.0,只有2.0中包含OracleClientusing System;using System.Collections;using ponentModel;using System.Data;using System.Web;using System.Web.Services;using System.Web.Services.Protocols;using System.Security.Cryptography;using System.IO;using System.Collections.Generic;using System.Configuration;using System.Data.SqlClient;using System.Data.OracleClient;public partial class orclService : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){Response.AddHeader("Access-Control-Allow-Origin", "*");List<info> result = new List<info>();string callback = Request.QueryString["method"];if (callback == "getTableInfo")result = getTableInfo();Response.Write(result);Response.End();}//<add key="orclCon" value="Data Source=ORCL;User Id=sa;Password=123;"/>private static string strConn = ConfigurationSettings.AppSettings["orclCon"];[WebMethod(Description = "<h3>Oracle连接测试</h3>")] public List<info> getTableInfo(){List<info> list = new List<info>();OracleConnection conn = new OracleConnection(strConn);conn.Open();string strComm = "select * from ATEST_POLYGON";OracleCommand comm = new OracleCommand(strComm, conn);OracleDataReader sdr = comm.ExecuteReader();info strInfo = null;while (sdr.Read()){strInfo = new info();strInfo.ID = sdr["ID"].ToString();strInfo.Content = sdr["CONTENT"].ToString();list.Add(strInfo);}if (!sdr.HasRows){strInfo.Content = "无匹配记录";list.Add(strInfo);sdr.Close();return list;}public class info{private string id;public string ID{get { return this.id; }set { this.id = value; }}private string content;public string Content{get { return this.content; }set { this.content = value; }}}}2、ODBC(参见“Oracle 通过 ODBC 连接”)using System;using System.Collections;using ponentModel;using System.Data;using System.Linq;using System.Web;using System.Web.Services;using System.Web.Services.Protocols;using System.Xml.Linq;using System.Security.Cryptography;using System.IO;using System.Collections.Generic;using System.Configuration;using System.Data.SqlClient;using System.Data.Odbc;public partial class orclService : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){Response.AddHeader("Access-Control-Allow-Origin", "*");int result = 0;string callback = Request.QueryString["method"];if (callback == "getTableInfo")result = getTableInfo();Response.Write(result);Response.End();}//<add key="orclCon_windows" value="DSN=oracle_windows;UID=sa;PWD=123;"/>// <add key="orclCon_linux" value="DSN=oracle_linux;UID=sde;PWD=sde;"/>private static string strConn = ConfigurationSettings.AppSettings["orclCon_linux"];[WebMethod(Description = "<h3>Oracle连接测试</h3>")]public int getTableInfo(){OdbcConnection odbcconn = new OdbcConnection(strConn);odbcconn.Open();string strComm = "select * from ATEST_POLYGON";OdbcDataAdapter odbcda = new OdbcDataAdapter(strComm, odbcconn);DataSet ds = new DataSet();odbcda.Fill(ds);DataTable dt = new DataTable();dt = ds.Tables[0];odbcconn.Close();odbcconn.Dispose();return dt.Rows.Count;}}3、OLEDBusing System;using System.Collections;using ponentModel;using System.Data;using System.Linq;using System.Web;using System.Web.Services;using System.Web.Services.Protocols;using System.Xml.Linq;using System.Security.Cryptography;using System.IO;using System.Collections.Generic;using System.Configuration;using System.Data.SqlClient;using System.Data.OleDb;public partial class orclService : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){Response.AddHeader("Access-Control-Allow-Origin", "*");List<info> result = new List<info>();string callback = Request.QueryString["method"];if (callback == "getTableInfo")result = getTableInfo();Response.Write(result);Response.End();}//<add key="orclCon_windows" value="Provider=OraOLEDB.Oracle.1;Data Source=ORCL;User ID=sa;Password=123;Persist Security Info=False;"/>//<add key="orclCon_linux" value="Provider=OraOLEDB.Oracle.1;DataSource=ORCL_LINUX;User ID=sde;Password=sde;Persist Security Info=False;"/>private static string strConn = ConfigurationSettings.AppSettings["orclCon_windows"];[WebMethod(Description = "<h3>Oracle连接测试</h3>")] public List<info> getTableInfo(){List<info> list = new List<info>();OleDbConnection conn = new OleDbConnection(strConn);conn.Open();string strComm = "select * from ATEST_POLYGON";OleDbCommand comm = new OleDbCommand(strComm, conn);OleDbDataReader sdr = comm.ExecuteReader();info strInfo = null;while (sdr.Read()){strInfo = new info();strInfo.ID = sdr["ID"].ToString();strInfo.Content = sdr["CONTENT"].ToString();list.Add(strInfo);}if (!sdr.HasRows){strInfo.Content = "无匹配记录";list.Add(strInfo);}sdr.Close();return list;conn.Close();conn.Dispose();return list;}public class info{private string id;public string ID{get { return this.id; }set { this.id = value; }}private string content; public string Content {get { return this.content; } set { this.content = value; } }}}。
pyodbc连接oracle 的connect用法-概述说明以及解释
pyodbc连接oracle 的connect用法-概述说明以及解释1.引言1.1 概述在现代软件开发中,使用数据库是非常常见的需求。
而对于Python 开发人员来说,连接不同类型的数据库是必不可少的技能之一。
本文将重点介绍如何使用pyodbc库来连接Oracle数据库,具体来说是通过connect函数的用法。
在介绍pyodbc连接Oracle数据库的用法之前,我们首先需要了解pyodbc的基本概念和特点。
pyodbc是一个Python对ODBC(Open Database Connectivity)的封装库,它允许Python程序与SQL数据库进行交互,包括连接数据库、执行SQL语句以及获取查询结果等操作。
因此,通过pyodbc可以实现Python程序与Oracle数据库之间的无缝交互。
本文将以建立连接为例,详细介绍pyodbc库中connect函数的用法,帮助读者快速掌握如何在Python中连接Oracle数据库,从而为后续的数据操作提供基础支持。
希望本文能够帮助读者更加深入地了解pyodbc 库的使用方法,从而提升数据库操作的效率和准确性。
"1.2 文章结构"部分介绍了整篇文章的结构安排,包括引言、正文和结论三个部分。
引言部分主要说明了文章的概述、结构和目的,正文部分将详细介绍pyodbc的概念和Oracle数据库连接的方法,以及pyodbc 中connect函数的具体用法。
结论部分将总结文章的重点内容,并给出使用建议和未来的展望。
整篇文章的结构清晰明了,有助于读者快速了解文章内容,并对相关知识有一个系统性的了解。
1.3 目的本篇文章旨在介绍如何使用pyodbc库连接Oracle数据库,并重点介绍了connect函数的用法。
通过阅读本文,读者将了解到pyodbc库的基本概念和特点,以及如何在Python中通过pyodbc实现与Oracle数据库的连接。
除此之外,文章还将详细说明connect函数的用法,帮助读者更好地理解如何在代码中使用这一函数来实现数据库连接操作。
pyodbc连接oracle 的connect用法
pyodbc连接oracle 的connect用法全文共四篇示例,供读者参考第一篇示例:在Python编程语言中,pyodbc是一种流行的数据库连接库,它可以帮助开发者在Python代码中连接各种类型的数据库。
在本文中,我们将重点介绍如何使用pyodbc连接Oracle数据库,并详细介绍connect方法的用法。
要使用pyodbc连接Oracle数据库,我们需要安装pyodbc库和Oracle数据库驱动程序。
可以通过pip工具来安装pyodbc库,在命令行中输入以下命令:```pip install pyodbc```接下来,需要安装Oracle数据库驱动程序。
Oracle数据库有多种版本和类型的驱动程序,可以根据具体情况选择合适的版本。
安装驱动程序后,就可以开始使用pyodbc连接Oracle数据库了。
在连接Oracle数据库之前,我们首先需要获取数据库的连接信息,包括数据库的主机地址、端口号、数据库实例名、用户名和密码等。
这些信息都是连接Oracle数据库所必需的。
下面是一个使用pyodbc连接Oracle数据库的示例代码:# 设置数据库连接信息host = 'localhost'port = '1521'database = 'ORCL'user = 'username'password = 'password'# 构建连接字符串conn_str = (r"Driver={{Oracle in OraClient11g_home1}};"r"Server={host}:{port};"r"Database={database};"r"Uid={user};"r"Pwd={password};")# 连接数据库conn = pyodbc.connect(conn_str)# 创建游标cursor = conn.cursor()# 执行查询语句cursor.execute("SELECT * FROM table_name")# 读取结果集for row in cursor:print(row)# 关闭连接conn.close()```在上面的示例代码中,我们首先设置了数据库连接信息,包括主机地址、端口号、数据库实例名、用户名和密码。
VS2013位使用64位ocilib进行64位oracle11g连接配置教程
本机环境,windows 7 sp1 旗舰版64位。
Oracle 11g client 64位。
Visual studio 2013-ultimate-u5
Oci-3.12.1解压在d盘根目录下。
在vs2013中新建项目。
右键你的项目-属性-VC++目录-包含目录,编辑选择ocilib的include目录
右键你的项目-属性-C/C++-常规-附加包含目录,编辑选择ocilib的include目录
右键你的项目-属性-链接库-常规-附加库目录,编辑选择ocilib的lib64目录
右键你的项目-属性-链接库-输入-附加依赖项,输入你要使用的lib库。
对于dll文件,放在项目对应debug文件夹下。
Vs2013编译
选择生成-配置管理器
新建x64平台,选择x64平台。
然后再生成解决方案,在运行,ok。
之前遇到无法加载oci.dll的问题,是因为,我系统装的oracle client是64位的,所以其bin 目录下的oci.dll也是64位的,导致在用32位编译的时候,调用不了64位的dll文件。
将所有的都改成64位统一后,就能使用ocilib连接oracle进行操作了。
操作的代码略,可以百度ocilib连接oracle的例子,本文只提供配置方法。
C#连接Oracle数据库的四种方法
C#连接Oracle数据库的四种⽅法C#连接数据库的四种⽅法在进⾏以下连接数据库之前,请先在本地安装好Oracle Client,同时本次测试System.Data的版本为:2.0.0.0。
在安装Oracle Client上请注意,如果OS是3-BIT请安装32-BIT的Oracle Client,但OS是64-BIT,需要根据实际情况安装,如果你的APP是按32-BIT运⾏的,则需要安装32-BIT客户端,如果是按64位运⾏的,则安装64位客户端,⽽不是OS是64-BIT的,就要安装64-BIT的ORACLE 客户端。
本次测试会在32-BIT 和64-BIT 上同时测试,32-BIT Oracle10G。
1.ODBC1.1 ⾸先需要在控制⾯板->管理⼯具->数据源(odbc)。
1.2 using System.Data.Odbc;1.3 连接数据库OdbcConnection conn = new OdbcConnection(DSN=XXX;UID=XXX;Pwd=XXX;);conn.Open();conn.Close();32-BIT 和64-BIT 都OK。
2.OleDb2.1 OleDB连接驱动有MSDAORA和OraOLEDB.Oracle,他们分别由微软和Oracle提供。
使⽤OraOLEDB.Oracle驱动,需要安装Oracle Data Provider for OLE DB 。
在32位机器上两者都可以,在64位机器上,使⽤“MSDAORA”会出现“未在本地计算机上注册“MSDAORA.1”提供程序”的问题,OraOLEDB.Oracle⼀切正常。
2.2 连接数据库//using System.Data.OleDb;OleDbConnection conn = new OleDbConnection("Provider=MSDAORA.1;User ID=XXX;password=XXX;Data Source=XXX;Persist Security Info=False"); Provider需要根据实际情况修改conn.Open();conn.Close();3.OracleClient3.1 //using System.Data.OracleClient;3.2 连接数据库OracleConnection conn = new OracleConnection(“data source=XXX;user=XXX;password=XXX;”);conn.Open();conn.Close();32-BIT 和64-BIT 都OK。
C#连接Oracle数据库,通过EF自动生成与数据库表相关的实体类
C#连接Oracle数据库,通过EF⾃动⽣成与数据库表相关的实体类C#连接Oracle数据库,通过EF⾃动⽣成与数据库表相关的实体类
ps:如需转载,请在转载⽂章明显处,i标注作者和原⽂地址
⼀、准备条件
需要⾃⼰电脑上已经安装了Oracle数据库,并且已经创建了相关实例
使⽤vs创建⼀个项⽬
⼆、连接Oracle数据库
下载安装 Oracle Developer Tools for Visual Studio
博主的使⽤的是vs2017
⼯具下载地址:
⾃带的oracle database显⽰
安装完整版后 oracle database的显⽰
下载后,直接安装好就⾏(安装前需要关闭vs,否则会提⽰错误)
三、⾃动⽣成实体类
1、下载安装相应的程序框架
⼯具-->NuGet包管理器-->管理NuGet程序包
搜索安装EntityFramework
下载安装Oracle 实体类框架Oracle.ManagedDataAccess.EntityFramework(如图)
2、添加实体数据模型
3、⽣成结果。
