nodejs連接Oracle數(shù)據(jù)庫(kù)的方法,read,write讀取和寫(xiě)入的功能實(shí)現(xiàn)【詩(shī)書(shū)畫(huà)唱】
內(nèi)容查看:
read,write讀取和寫(xiě)入的功能實(shí)現(xiàn)
1、在項(xiàng)目中創(chuàng)建一個(gè)txt文件,然后讀取這個(gè)文件中的內(nèi)容。
2、修改上一題中txt文件中的內(nèi)容為(注意換行符和空格符):
春眠不覺(jué)曉 處處聞啼鳥(niǎo)
夜來(lái)風(fēng)雨聲 花落知多少
nodejs連接Oracle數(shù)據(jù)庫(kù)的方法
注釋:這里我提到的Vue,不是我使用了vue.js,其實(shí)這篇專欄用了node.js,是為vue.js的運(yùn)用做準(zhǔn)備。
Node.js邁出第一步,為前端工程化開(kāi)發(fā)奠定了基礎(chǔ),基于Node提供了項(xiàng)目腳手架、打包工具、包管理工具等等,基于Node誕生了Vue、Angular、 React等前端開(kāi)發(fā)思想,以及組裝搭配的前端開(kāi)發(fā)方案。
Vue.js(讀音 /vju?/, 類(lèi)似于 view) 是一套構(gòu)建用戶界面的漸進(jìn)式框架。
Angular 是一款十分流行且好用的 Web 前端框架,目前由 Google 維護(hù)。
React 是一個(gè)用于構(gòu)建用戶界面的 JAVASCRIPT 庫(kù)。



read,write讀取和寫(xiě)入的功能實(shí)現(xiàn)
要注意的是讀取和寫(xiě)入的相對(duì)路徑不可以寫(xiě)錯(cuò),錯(cuò)了就沒(méi)有效果了,以防萬(wàn)一就直接
進(jìn)行下面的復(fù)制操作:



1、在項(xiàng)目中創(chuàng)建一個(gè)txt文件,然后讀取這個(gè)文件中的內(nèi)容。


let?fs=require('fs');
let?rs=fs.createReadStream('MyProject/Vue學(xué)習(xí)的作業(yè)1/file/input.txt');
rs.setEncoding('utf-8');
let?data='';
rs.on('data',function(chunk){
data+=chunk;
});
rs.on('end',function(){
?console.log('文件讀取完畢');
?console.log('文件中的內(nèi)容:'+data);
????
????});
rs.on('error',function(err){
???console.log(err.stack)
????
????});



2、修改上一題中txt文件中的內(nèi)容為(注意換行符和空格符):
春眠不覺(jué)曉 處處聞啼鳥(niǎo)
夜來(lái)風(fēng)雨聲 花落知多少

let?fs=require('fs');
let?data="春眠不覺(jué)曉?處處聞啼鳥(niǎo)\n夜來(lái)風(fēng)雨聲?花落知多少";
let?ws=fs.createWriteStream('MyProject/Vue學(xué)習(xí)的作業(yè)1/file/input.txt');
ws.write(data,'utf-8');
ws.end();
ws.on('finish',function(){
console.log("寫(xiě)入完畢!")
})
ws.on('error',function(err){
????console.log(err.stack)
????
????})




nodejs連接Oracle數(shù)據(jù)庫(kù)的方法
1
進(jìn)行系統(tǒng)環(huán)境變量的配置,對(duì)應(yīng)情況:
OCI_LIB_DIR=D:\instantclient_12_2\sdk\lib\msvc
OCI_INC_DIR=D:\instantclient_12_2\sdk\include
OCI_VERSION=12







//引入oracledb模塊
const?{?connectionClass?}?=?require('oracledb');
let?oracledb=require('oracledb');
//設(shè)置oracle連接參數(shù)
let?config={
????user:'X',//數(shù)據(jù)庫(kù)鏈接賬號(hào)
????password:'sshcPwd',//密碼
????connectString:'127.0.0.1:1521/orcl'//數(shù)據(jù)庫(kù)的IP地址,端口號(hào)和數(shù)據(jù)庫(kù)名
}
//獲取數(shù)據(jù)庫(kù)連接對(duì)象conn
oracledb.getConnection(config,function(err,conn){
????if(err){//如果連接數(shù)據(jù)庫(kù)出現(xiàn)錯(cuò)誤
????????console.log(err.message);
????????return;
????}
????console.log('數(shù)據(jù)庫(kù)連接成功'+conn);
????//查詢
????//?connection.execute("select?*?from?userinfo",function(err,result){
????//?????if(err){
????//?????????console.error(err.message);
????//?????????return;
????//?????}
????//?????//打印返回的表結(jié)構(gòu)
????//?????console.log(JSON.stringify(result.metaData));
????//?????//打印返回的行數(shù)據(jù)
????//?????console.log(JSON.stringify(result.rows));
????//?????doRelease(connection);//自定義方法
????//?});
});



老師的代碼

//oracledb.js
//引入oracledb模塊
let?oracledb?=?require('oracledb');
//設(shè)置Oracle的連接參數(shù)
let?config?=?{
????user:?'j190802',//數(shù)據(jù)庫(kù)賬號(hào)
????password:?'orcl',//密碼
????//數(shù)據(jù)庫(kù)的Ip地址,端口號(hào)以及數(shù)據(jù)庫(kù)名
????connectString:?'127.0.0.1:1521/orcl'
};
//獲取數(shù)據(jù)庫(kù)的連接對(duì)象conn
oracledb.getConnection(config,function(err,conn){
????if(err)?{//如果連接數(shù)據(jù)庫(kù)出現(xiàn)了錯(cuò)誤
????????console.log(err.message);
????????return;
????}
????console.log('數(shù)據(jù)庫(kù)連接成功'?+?conn);
});


//read.js
//導(dǎo)入fs模塊
let?fs?=?require('fs');
//創(chuàng)建讀的文件流
//指定讀取文件的路徑
let?rs?=?fs.createReadStream('file/input.txt');
//設(shè)置字符集編碼
rs.setEncoding('UTF8');
//將讀取的內(nèi)容存在data變量中
let?data?=?'';
//當(dāng)每次讀取文件時(shí)觸發(fā)這個(gè)函數(shù)
rs.on('data',function(chunk){
????//將每次讀取的內(nèi)容拼接到data中
????data?+=?chunk;
});
//當(dāng)讀取文件完畢以后觸發(fā)這個(gè)函數(shù)
rs.on('end',function(){
????console.log('文件讀取完畢');
????console.log('文件中的內(nèi)容是:'?+?data);
});
//當(dāng)讀取文件時(shí)發(fā)生錯(cuò)誤就會(huì)觸發(fā)這個(gè)函數(shù)
rs.on('error',function(err){
????console.log(err.stack);
});


//write.js
let?fs?=?require('fs');
//需要寫(xiě)入到文件中的內(nèi)容
let?data?=?'畢業(yè)以后找到一個(gè)高薪的工作';
//獲取寫(xiě)入的文件流
//指定寫(xiě)入的文件的路徑
let?ws?=?fs.createWriteStream('file/input.txt');
//設(shè)置字符集編碼并且設(shè)置寫(xiě)入的內(nèi)容
ws.write(data,'UTF8');
//標(biāo)記文件末尾
ws.end();
//寫(xiě)入完成以后觸發(fā)這個(gè)函數(shù)
ws.on('finish',function(){
????console.log('寫(xiě)入完畢');
});
//寫(xiě)入出現(xiàn)錯(cuò)誤時(shí)觸發(fā)這個(gè)函數(shù)
ws.on('error',function(err){
????//打印錯(cuò)誤信息
????console.log(err.stack);
});
