用这种不入流的方式来连接数据库,展示数据库的内容,虽然逻辑上就不合理,不应该采用。但是为了方便工作,我还是霸王硬上弓了
<!--自定的函数集合-->
<script type="text/javascript">
//@全局变量定义区
var g_Oracle_Instance = new ActiveXObject("ADODB.Connection");
var g_Oracle_RecordSet = new ActiveXObject("ADODB.Recordset");
var g_Oracle_EXE_Sql_Open = 0;
//@数据库登录
function INIT_ORACLE(){
try{
g_Oracle_Instance.Open("DSN=odbcsid;SERVER=127.0.0.1;UserID=use;Password=passwd;Database=odbcsid;Port=1521");
}catch(e){
alert("用户名,密码或者实例名错误,拒绝登录");
}
}
//@数据库断开连接,释放资源
function DELETE_ORACLE(){
g_Oracle_RecordSet.close();
g_Oracle_Instance.close();
g_Oracle_Instance = null;
}
//@执行SQL,查询数据
function Oracle_EXE_Sql(sql){
try{
if(g_Oracle_EXE_Sql_Open)
g_Oracle_RecordSet.close();
g_Oracle_RecordSet.open(sql, g_Oracle_Instance);
g_Oracle_EXE_Sql_Open = 1;
}catch(e){
g_Oracle_EXE_Sql_Open = 0;
}
以下片段为处理结果片段,自行修改使用,只说明使用方法【其中取值的时候RecordSet加索引后一定要记得加.value,具体差别你可以验证测试看看其中的不同,哈哈。个人测试遇到分析的结果是:如果不加.value,类似指针指向,被操作数指向了一个结果集中的某一个位置,假如稍后关闭结果集,前面的数据在引用获取值的时候会报错,提示,已经被关闭】
while(!g_Oracle_RecordSet.EOF){
g_parent_id[g_parent_cnt] = g_Oracle_RecordSet(0).value;
g_parent_name[g_parent_cnt] = g_Oracle_RecordSet(1).value;
g_Oracle_RecordSet.moveNext;
}
</script>