oracle数据库连接支持库

kio 4月前 571

起因看到https://www.aardio.cc/thread-128-1-1.html 的求助帖子,但是我没想起来那个密码,尴尬。。。先发这里吧。

Demo用了godking大佬的vilistEx库和mesage库自行下载。


#Demo
import win.ui;
import godking.vlistEx;
import godking.message;
/*DSG{{*/
var winform = win.form(text="Oracle数据库查询演示";right=690;bottom=469)
winform.add(
button={cls="button";text="查询";left=539;top=13;right=658;bottom=37;z=2};
listview={cls="vlistEx";left=6;top=48;right=684;bottom=464;acceptfiles=1;aw=1;db=1;dl=1;dr=1;dt=1;hscroll=1;vscroll=1;z=1}
)
/*}}*/

import kio.oracle;
var msg=godking.message(winform);
winform.button.oncommand = function(id,event){
	try{
	var ora=kio.oracle("127.0.0.1:1521/xe","SYSTEM", "123456")
	var rs=ora.query("select JOB_ID,JOB_TITLE,MIN_SALARY,MAX_SALARY from HR.JOBS") //不可以用;结尾,不然报ORA-00911
	var b={}
	while (rs.Read()) {
		..table.push(b,{rs[1],rs[2],rs[3],rs[4]})
	}
	winform.listview.setTable(b)
	winform.listview.setColumns({"编码","标题","低价","高价"}
								,{110,250,180,120}
								,{0,0,1,2})

	rs.Close();
}
catch(e){
	msg.info(e,0)
}
}
winform.show();
win.loopMessage();

库代码:

//oracle oracle数据库
namespace kio;
import dotNet;

class oracle {
	ctor(server,UserId,PWD){
		this.conn = _ora.OracleConnection("Data Source="++server++";User Id="++UserId++";Password="++PWD);
		if this.conn this.conn.Open();
	};
	query = function(strCmd){
		if !this.conn return ;
		var cmd = _ora.OracleCommand(strCmd, this.conn);
		var rs = cmd.ExecuteReader();
		return rs; 
	}
	exec = function(strCmd){
		if !this.conn return ;
		var cmd = _ora.OracleCommand(strCmd, this.conn);
		if cmd return cmd.ExecuteNonQuery();		 
	}
}

namespace oracle {
	_dll = ..dotNet.loadFile($ "~\lib\kio\oracle\Oracle.ManagedDataAccess.dll"); //导入程序集文件
	_ora = _dll.import("Oracle.ManagedDataAccess.Client"); //导入程序集中的名字空间或类
}
/**intellisense(kio)
oracle=oracle数据库支持库
oracle( = 连接数据库
oracle(.(server,UserId,PWD) = 连接数据库\nserver=提供ip和端口,如127.0.0.1:1521/xe\nUserId=用户名\nPWD=密码
oracle(.(default) = @"127.0.0.1:1521/xe", "SYSTEM", "123456")
oracle() = !oracon.
end intellisense**/

/**intellisense(!oracon)
query( =查询并生成一个OracleDataReader
query(.(strCmd)=对连接执行 Transact-SQL 语句并生成一个OracleDataReader;
query() = !OracleDataReader.
exec( =查询并返回受影响的行数
exec(.(strCmd)=对连接执行 Transact-SQL 语句并返回受影响的行数
end intellisense**/

/**intellisense(!OracleDataReader)
FieldCount=获取当前行中的列数;
RecordsAffected=获取执行 Transact-SQL语句所更改、插入或删除的行数。
IsClosed=获取一个值,该值指示数据读取器是否已关闭
Close()=关闭 DmDataReader 对象;
GetBoolean(int)=获取指定列的布尔值形式的值;
GetByte(int)=获取指定列的字节形式的值;
GetBytes(int,long_fieldoffset,byte[]_buffer,int_bufferoffset,int_length)=从指定的列偏移量将字节流读入缓冲区,并将其作为从给定的缓冲区偏移量开始的数组;
GetChar(int)=获取指定列的单个字符串形式的值;
GetChars(int,long_fieldoffset,char[]_buffer,int_bufferoffset,int_length)=从指定的列偏移量将字符流作为数组从给定的缓冲区偏移量开始读入缓冲区;
GetDataTypeName(int)=获取源数据类型的名称;
GetDateTime(int)=获取指定列的 DateTime 对象形式的值;
GetDecimal(int)=获取指定列的 Decimal 对象形式的值;
GetDouble(int)=获取指定列的双精度浮点数形式的值;
GetEnumerator()=返回可循环访问集合的枚举数;
GetFieldType(int)=获取是对象的数据类型的 Type;
GetFloat(int)=获取指定列的单精度浮点数形式的值;
GetInt16(int)=获取指定列的 16 位有符号整数形式的值;
GetInt32(int)=获取指定列的 32 位有符号整数形式的值;
GetInt64(int)=获取指定列的 64 位有符号整数形式的值;
GetKeyCols(str_schema,str_table)=获取构成主关键字的列;
GetName(int)=获取指定列的名称;
GetOrdinal(str_nmae)=在给定列名称的情况下获取列序号;
GetSchemaTable()=返回一个 DataTable,它描述 DmDataReader 的列元数据;
GetString(int)=获取指定列的字符串形式的值;
GetUniqueCols(str_schema,string_table)=获取有唯一性约束的列;
GetValue(int)=获取以本机格式表示的指定列的值;
GetValues(obeject[])=获取当前行的集合中的所有属性列;
IsDBNull(int)=获取一个布尔值,该值指示列中是否包含不存在的或缺少的值;
NextResult()=当读取批处理 Transact-SQL 语句的结果时,使数据读取器前进到下一个结果;
Read()=使 DmDataReader 前进到下一条记录。
end intellisense**/

打包的文件:


见附件位置

用法,kio文件夹解压到lib目录中即可,电脑需要.net4.6以上运行库

上传的附件:
  • kio.7z (大小:1.99M,下载次数:329)
最新回复 (2)
  • 小光芒 4月前
    0 2
    哇 顶一个
  • tanzh 4月前
    0 3
    arr生态圈又多成员了
返回