nodejs怎么连接oracle

JavaScript015

nodejs怎么连接oracle,第1张

Node.js 安装完后, 会附带安装 npm, 在 cmd 窗口中执行以下命令即可安装 node-oracle:

npm install oracle

或者使用 -g 命令安装到 global 目录中, windows7 下为 "C:\Users\当前用户\AppData\Roaming", 成功安装后会显示 node-oracle 的版本号及实际安装到的目录.

如果在需要使用代理进行安装, 则使用以下命令:

npm install oracle --proxy http://proxy_server:port

1. 安装 Oracle 11g express

详见: 《Windows 7 x64 安装 Oracle 11g Express》

2. 安装 Microsoft Visual Studio 2012 Express

在 Microsoft 官网注册并下载 Visual Studio 2012 Express for Windows Desktop, 运行安装.

3. 安装 Node.js (当前最新版本为v0.10.18)

在 Node.js 官网下载 node-v0.10.18-x64.msi, 运行安装.

4. 安装 node-oracle (当前最新版本为 v0.3.4)

通过 npm 来进行安装, 参考网址: https//npmjs.org/package/oracle

(1). 安装 Oracle instant client

这是 Oracle 提供的访问数据库的 C++接口, windows 64位在这里下载 Version 12.1.0.1.0 中的 instantclient-basic-windows.x64-12.1.0.1.0.zip和instantclient-sdk-windows.x64-12.1.0.1.0.zip并把它们解压到 C:\instantclient_12_1 文件夹中, 由于两个 zip 中的文件各不相同, 所以合并到同一个文件夹也不会发生覆盖.

(2). 设置系统环境变量

右键"我的电脑" → Properties → Advanced system settings → Environment Variables → System variables → New...

如果安装了 Visutal Studio 2012, 则 环境变量如下:

OCI_INCLUDE_DIR=C:\instantclient_12_1\sdk\include

OCI_LIB_DIR=C:\instantclient_12_1\sdk\lib\msvc\vc11

OCI_VERSION=12

Path=...c:\instantclient_12_1\vc11c:\instantclient_12_1

注意: 对于(1)中下载的两个 zip 文件, OCI_VERSION 应设置为 12, 如果按原文设置成 11, 则安装时会报错: LINK : fatal error LNK1181: cannot open input file 'C:\instantclient_12_1\sdk\lib\msvc\vc11\oraocci11.lib'

请确保 Path 中 c:\instantclient_12_1\vc11 在 c:\instantclient_12_1 前面.

(3). npm 安装

Node.js 安装完后, 会附带安装 npm, 在 cmd 窗口中执行以下命令即可安装 node-oracle:

npm install oracle

或者使用 -g 命令安装到 global 目录中, windows7 下为 "C:\Users\当前用户\AppData\Roaming", 成功安装后会显示 node-oracle 的版本号及实际安装到的目录.

如果在需要使用代理进行安装, 则使用以下命令:

npm install oracle --proxy http://proxy_server:port

5. 测试 Node.js 连接 Oracle

(1). 在 oracle 中创建 NODE_TEST 表并添加数据.

CREATE TABLE NODE_TEST

(

A INTEGER,

B INTEGER

)

INSERT INTO NODE_TEST(A, B) VALUES (1, 2)

INSERT INTO NODE_TEST(A, B) VALUES (3, 4)

(2). 在 C:\TEMP 目录下添加 select.js.

var oracle = require('node-oracle 安装目录')

var connectData = {"hostname": "localhost", "database": "XE" ,

"user": "用户名", "password": "密码"}

oracle.connect(connectData, function(err, connection) {

if ( err ) {

console.log(err)

} else {

connection.execute("SELECT * FROM NODE_TEST", [], function(err, results) {

if ( err ) {

console.log(err)

} else {

console.log(results)

}

connection.close()

})

}

})

(3). 在 cmd 中执行 node C:\TEMP\select.js, 成功检索出数据.

6. 测试 Node.js 对 Oracle 的增/删/改/查/DDL

(1). INSERT: 在 C:\TEMP 目录下添加 insert.js

var oracle = require('node-oracle 安装目录')

var connectData = {"hostname": "localhost", "database": "XE" ,

"user": "用户名", "password": "密码"}

oracle.connect(connectData, function(err, connection) {

if ( err ) {

console.log(err)

} else {

connection.execute(" INSERT INTO NODE_TEST (A, B) " +

" VALUES (:1, :2) RETURNING A INTO :3 ",

['5', '6', new oracle.OutParam()],

function(err, results) {

if ( err ) {

console.log(err)

} else {

console.log(results)

}

connection.close()

}

)

}

})

在 cmd 中执行 node C:\TEMP\insert.js 及 node C:\TEMP\select.js, 成功插入数据.

(2). DELETE: 在 C:\TEMP 目录下添加 delete.js

var oracle = require('node-oracle 安装目录')

var connectData = {"hostname": "localhost", "database": "XE" ,

"user": "用户名", "password": "密码"}

oracle.connect(connectData, function(err, connection) {

if ( err ) {

console.log(err)

} else {

connection.execute("DELETE FROM NODE_TEST WHERE A = :1",

[5],

function(err, results) {

if ( err ) {

console.log(err)

} else {

console.log(results)

}

connection.close()

})

}

})

在 cmd 中执行 node C:\TEMP\delete.js 及 node C:\TEMP\select.js, 成功删除数据.

(3). UPDATE: 在 C:\TEMP 目录下添加 update.js

var oracle = require('node-oracle 安装目录')

var connectData = {"hostname": "localhost", "database": "XE" ,

"user": "用户名", "password": "密码"}

oracle.connect(connectData, function(err, connection) {

if ( err ) {

console.log(err)

} else {

connection.execute("UPDATE NODE_TEST SET B = :1 WHERE A = :2",

[8, 3],

function(err, results) {

if ( err ) {

console.log(err)

} else {

console.log(results)

}

connection.close()

})

}

})

在 cmd 中执行 node C:\TEMP\update.js 及 node C:\TEMP\select.js, 成功修改数据.

(4). DDL: 在 C:\TEMP 目录下添加 ddl.js

var oracle = require('node-oracle 安装目录')

var connectData = {"hostname": "localhost", "database": "XE" ,

"user": "用户名", "password": "密码"}

oracle.connect(connectData, function(err, connection) {

if ( err ) {

console.log(err)

} else {

connection.execute("ALTER TABLE NODE_TEST ADD (C INT)",

[],

function(err, results) {

if ( err ) {

console.log(err)

} else {

console.log(results)

}

connection.close()

})

}

})

在 cmd 中执行 node C:\TEMP\ddl.js 及 node C:\TEMP\select.js, 成功添加列C.

7. 开发环境

Windows 7 Enterprise(64-bit) + Microsoft Visual Studio 2012 Express +

Oracle Database Express Edition 11g Release 2 for Windows x32 +

Instant Client for Microsoft Windows (x64)(version 12.1.0.1.0) +

Node.js(v0.10.18) + node-oracle(v0.3.4).

测试的电脑已经装好Oracle客户端,而且用SQLplus可以连接上。

/*

* This sample shows how to list all the names from the EMP table

*

* It uses the JDBC THIN driver. See the same program in the

* oci8 samples directory to see how to use the other drivers.

*/

// You need to import the java.sql package to use JDBC

import java.sql.*

class Test

{

public static void main (String args [])

throws SQLException

{

// Load the Oracle JDBC driver

DriverManager.registerDriver(new oracle.jdbc.OracleDriver())

/* try{

Class.forName("oracle.jdbc.driver.OracleDriver")

}catch(Exception e){

System.out.println("No Driver!")

}

*/

// Connect to the database

// You must put a database name after the @ sign in the connection URL.

// You can use either the fully specified SQL*net syntax or a short cut

// syntax as <host>:<port>:<sid>. The example uses the short cut syntax.

String url = "jdbc:oracle:thin:@172.28.31.85:1521:YIKATONG"

String userName = "scott"

String password = "tiger"

if (args.length >0) url = args[0]

if (args.length >1) userName = args[1]

if (args.length >2) password = args[2]

System.out.println(url)

System.out.println(userName)

System.out.println(password)

Connection conn =

DriverManager.getConnection (url, userName, password)

// Create a Statement

Statement stmt = conn.createStatement ()

// Select the ENAME column from the EMP table

ResultSet rset = stmt.executeQuery ("select * from Test")

// Iterate through the result and print the employee names

while (rset.next ())

System.out.println (rset.getString (1))

}

}

补充日期: 2005-03-14 20:20:29

Java与Oracle的两种连接方式

src=>(作者:huihoo)

第一种方式:通过数据库本身的JDBC Driver连接到数据库

Classs.forName("oracle.jdbc.driver.OracleDriver")

Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.1.33:1521:huihoo","scott","tiger")

第二种方式:通过JDBC-ODBC桥连接到数据库

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver")

Connection conn = DriverManager.getConnection("jdbc:odbc:192.168.1.33","scott","tiger")

192.168.1.33为数据源

完整的用户登录

Properties props = new Properties()

props.put("user", "scott")

props.put("password", "tiger")

Driver myDriver = (Driver) Class.forName("oracle.jdbc.driver.OracleDriver").newInstance()

conn = myDriver.connect("jdbc:oracle:thin:@192.168.1.33:1521:huihoo", props)

conn.close()

System.out.println("成功登录.")

System.out.println("欢迎您 "+props.getProperty("user")+"!")