function GetDataFromDB(filename,tablename){ var datastr=""; var strdsn; var objrs; var objdbConn = new ActiveXObject("ADODB.Connection"); if (tablename==""){ return; } if (GetFileExt(filename) == ".MDB"){ strdsn = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ="+filename; }else{ strdsn = filename; } try{ objdbConn.Open(strdsn); objrs = objdbConn.Execute("SELECT * FROM "+tablename); } catch(e){ alert("打开数据库错误!\r\n"+e.description); return; } var fdCount = objrs.Fields.Count - 1; datastr=datastr+"数据库:["+filename.replace(/\\/gi,"/")+"].["+tablename+"]<BR><table border=1><tr>"+"\r\n"; // 显示数据库的字段名称 for (var i=0; i <= fdCount; i++) datastr=datastr+"<td><b>" + objrs.Fields(i).Name + "</b></td>"+"\r\n"; datastr=datastr+"</tr>"; if (!objrs.EOF){ // 显示数据库内容 var rnum=0; while (!objrs.EOF){ datastr=datastr+"<tr>"; // 显示每笔记录的字段 for (i=0; i <= fdCount; i++) datastr=datastr+"<td>" + objrs.Fields(i).Value + "</td>"+"\r\n"; datastr=datastr+"</tr>"; objrs.moveNext(); // 移到下一笔记录 rnum++; } datastr=datastr+"</table>"+"\r\n"; datastr=datastr+"数据库共有"+rnum+"条记录!<br>"; }else{ datastr=datastr+"</table>"+"\r\n"; datastr=datastr+"数据库内没有记录!<br>"; } objrs.Close();// 关闭记录集合 return datastr; objdbConn.Close(); // 关闭数据库链接 } function GetXMLFromDB(filename,tablename){ var datastr=""; var strdsn; var objrs; var objdbConn = new ActiveXObject("ADODB.Connection"); if (tablename==""){ return; } if (GetFileExt(filename) == ".MDB"){ strdsn = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ="+filename; }else{ strdsn = filename; } try{ objdbConn.Open(strdsn); objrs = objdbConn.Execute("SELECT * FROM "+tablename); } catch(e){ alert("打开数据库错误!\r\n"+e.description); return; } var fdCount = objrs.Fields.Count - 1; datastr=datastr+"<?xml version='1.0' encoding='gb2312'?><DATA><title> 数据库:["+filename.replace(/\\/gi,"/")+"].["+tablename+"]</title>"+"\r\n"; // 显示数据库的字段名称 datastr=datastr+"<fields><count>"+(fdCount+1)+"</count>"+"\r\n"; for (var i=0; i <= fdCount; i++) datastr=datastr+"<field"+i+">" + objrs.Fields(i).Name + "</field"+i+">"+"\r\n"; datastr=datastr+"</fields>"+"\r\n"; if (!objrs.EOF){ // 显示数据库内容 datastr=datastr+"<records>"+"\r\n"; var rnum=0; while (!objrs.EOF){ datastr=datastr+"<record>"; // 显示每笔记录的字段 for (i=0; i <= fdCount; i++) datastr=datastr+"<"+objrs.Fields(i).Name+">" + objrs.Fields(i).Value + "</"+objrs.Fields(i).Name+">"+"\r\n"; datastr=datastr+"</record>"+"\r\n"; objrs.moveNext(); // 移到下一笔记录 rnum++; } datastr=datastr+"</records>"+"\r\n"; datastr=datastr+"<message>数据库共有"+rnum+"条记录!</message>"+"\r\n"; }else{ datastr=datastr+"<message>数据库内没有记录!</message>"+"\r\n"; } datastr=datastr+"</DATA>"; objrs.Close();// 关闭记录集合 return datastr; objdbConn.Close(); // 关闭数据库链接 }
//-------------------------------------------- //--利用本地文件组件进行创建文件夹,自动创建上级所有文件夹 //--param: thepath = string (目标路径) //-------------------------------------------- function CreateFolder(thepath){ var objFSO = new ActiveXObject("Scripting.FileSystemObject"); var strFolder=thepath.replace("\\","/"); try{ for (var i=0;i<strFolder.length;i++){ if (strFolder.substr(i,1)=="/"){ var temppath=strFolder.substr(0,i+1); //alert(temppath); if (objFSO.FolderExists(temppath)){ ; }else{ objFSO.CreateFolder(temppath); } } } CreateFolder=true } catch(Exception){ CreateFolder=false
} }//-------------------------------------------- //--利用本地文件组件进行创建文件 //--param: filetext,folderTo,fileTo = string //-- 待写入的文本,目标路径,目标文件名称 //-------------------------------------------- function CreateFile(filetext,folderTo,fileTo){ var objFSO = new ActiveXObject("Scripting.FileSystemObject"); var strPathFile = folderTo+fileTo; if (objFSO.FolderExists(folderTo)){ ; }else{ CreateFolder(folderTo); }
<head>
<title>Database Administrator</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"><link rel="stylesheet" href="mycss.css" type="text/css">
<script language="javascript">
function GetFileExt(filename){
var temppos=filename.lastIndexOf(".");
var returnvalue=""; if (temppos>0){
returnvalue=filename.substr(temppos);
} return returnvalue.toUpperCase();
}
//--------------------------------------------
//--清空文件选择列表
//--param: el=<select> object
//--------------------------------------------
function deleteoptions(el){
var templen=el.options.length;
for(var i=templen;i>=0;i--){
el.remove(i);
}
}
//--------------------------------------------
//--生成数据表选择列表,事先清空列表
//--param: el=<select> object
//--------------------------------------------
function GetSchema(filename,el){
var datastr="";
var tname;
var ttype;
var strdsn;
var objrs; var objdbConn = new ActiveXObject("ADODB.Connection");
if (GetFileExt(filename) == ".MDB"){
strdsn = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ="+filename;
}else{
strdsn = filename;
} //首先清空文件列表
deleteoptions(el);
try{
objdbConn.Open(strdsn);
objrs = objdbConn.OpenSchema(20);
}
catch(e){
alert("打开数据库错误!\r\n"+e.description);
return;
}
var fdCount = objrs.Fields.Count - 1;
if (!objrs.EOF){
while (!objrs.EOF){
tname=objrs.Fields("TABLE_NAME").Value;
ttype=objrs.Fields("TABLE_TYPE").Value;
if ((ttype=="TABLE") || (ttype=="VIEW")){
myoption=new Option("["+ttype+"]"+tname,tname);
el.options[el.options.length]=myoption;
}
objrs.moveNext();
}
}
objrs.Close();// 关闭记录集合 return true;
objdbConn.Close(); // 关闭数据库链接
}
//未完
var datastr="";
var strdsn;
var objrs;
var objdbConn = new ActiveXObject("ADODB.Connection");
if (tablename==""){
return;
} if (GetFileExt(filename) == ".MDB"){
strdsn = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ="+filename;
}else{
strdsn = filename;
}
try{
objdbConn.Open(strdsn);
objrs = objdbConn.Execute("SELECT * FROM "+tablename);
}
catch(e){
alert("打开数据库错误!\r\n"+e.description);
return;
}
var fdCount = objrs.Fields.Count - 1; datastr=datastr+"数据库:["+filename.replace(/\\/gi,"/")+"].["+tablename+"]<BR><table border=1><tr>"+"\r\n";
// 显示数据库的字段名称
for (var i=0; i <= fdCount; i++)
datastr=datastr+"<td><b>" + objrs.Fields(i).Name + "</b></td>"+"\r\n";
datastr=datastr+"</tr>"; if (!objrs.EOF){
// 显示数据库内容
var rnum=0;
while (!objrs.EOF){
datastr=datastr+"<tr>";
// 显示每笔记录的字段
for (i=0; i <= fdCount; i++)
datastr=datastr+"<td>" + objrs.Fields(i).Value + "</td>"+"\r\n";
datastr=datastr+"</tr>";
objrs.moveNext(); // 移到下一笔记录
rnum++;
}
datastr=datastr+"</table>"+"\r\n";
datastr=datastr+"数据库共有"+rnum+"条记录!<br>";
}else{
datastr=datastr+"</table>"+"\r\n";
datastr=datastr+"数据库内没有记录!<br>";
} objrs.Close();// 关闭记录集合 return datastr; objdbConn.Close(); // 关闭数据库链接
}
function GetXMLFromDB(filename,tablename){
var datastr="";
var strdsn;
var objrs;
var objdbConn = new ActiveXObject("ADODB.Connection");
if (tablename==""){
return;
} if (GetFileExt(filename) == ".MDB"){
strdsn = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ="+filename;
}else{
strdsn = filename;
}
try{
objdbConn.Open(strdsn);
objrs = objdbConn.Execute("SELECT * FROM "+tablename);
}
catch(e){
alert("打开数据库错误!\r\n"+e.description);
return;
}
var fdCount = objrs.Fields.Count - 1; datastr=datastr+"<?xml version='1.0' encoding='gb2312'?><DATA><title> 数据库:["+filename.replace(/\\/gi,"/")+"].["+tablename+"]</title>"+"\r\n";
// 显示数据库的字段名称
datastr=datastr+"<fields><count>"+(fdCount+1)+"</count>"+"\r\n";
for (var i=0; i <= fdCount; i++)
datastr=datastr+"<field"+i+">" + objrs.Fields(i).Name + "</field"+i+">"+"\r\n";
datastr=datastr+"</fields>"+"\r\n"; if (!objrs.EOF){
// 显示数据库内容
datastr=datastr+"<records>"+"\r\n";
var rnum=0;
while (!objrs.EOF){
datastr=datastr+"<record>";
// 显示每笔记录的字段
for (i=0; i <= fdCount; i++)
datastr=datastr+"<"+objrs.Fields(i).Name+">" + objrs.Fields(i).Value + "</"+objrs.Fields(i).Name+">"+"\r\n";
datastr=datastr+"</record>"+"\r\n";
objrs.moveNext(); // 移到下一笔记录
rnum++;
}
datastr=datastr+"</records>"+"\r\n";
datastr=datastr+"<message>数据库共有"+rnum+"条记录!</message>"+"\r\n";
}else{
datastr=datastr+"<message>数据库内没有记录!</message>"+"\r\n";
}
datastr=datastr+"</DATA>"; objrs.Close();// 关闭记录集合 return datastr; objdbConn.Close(); // 关闭数据库链接
}
//--利用本地文件组件进行创建文件夹,自动创建上级所有文件夹
//--param: thepath = string (目标路径)
//--------------------------------------------
function CreateFolder(thepath){
var objFSO = new ActiveXObject("Scripting.FileSystemObject");
var strFolder=thepath.replace("\\","/");
try{
for (var i=0;i<strFolder.length;i++){
if (strFolder.substr(i,1)=="/"){
var temppath=strFolder.substr(0,i+1);
//alert(temppath);
if (objFSO.FolderExists(temppath)){
;
}else{
objFSO.CreateFolder(temppath);
}
}
}
CreateFolder=true
}
catch(Exception){
CreateFolder=false
}
}//--------------------------------------------
//--利用本地文件组件进行创建文件
//--param: filetext,folderTo,fileTo = string
//-- 待写入的文本,目标路径,目标文件名称
//--------------------------------------------
function CreateFile(filetext,folderTo,fileTo){
var objFSO = new ActiveXObject("Scripting.FileSystemObject");
var strPathFile = folderTo+fileTo; if (objFSO.FolderExists(folderTo)){
;
}else{
CreateFolder(folderTo);
}
var objStream = objFSO.CreateTextFile(strPathFile, true);
objStream.write(filetext);
objStream.Close();
}function showfile(el,openasxml){
var dbfilename,tablename;
var tempfile,body; dbfilename=dbfile.value; if ((dbfilename=="") || (el.options.count<1)){
return;
}
tablename=el.options[el.selectedIndex].value; if (openasxml){
tempfile="~temp.xml";
body=GetXMLFromDB(dbfilename,tablename);
}else{
tempfile="~temp.html";
body=GetDataFromDB(dbfilename,tablename);
}// alert(temppath+tempfile);
//return;// content.document.open();
// mycontent.document.location=tempfile; mycontent.value=body; downloadbtn.disabled=false;
downloadbtn.style.cursor="hand";
genfile.value=tempfile;
}
function downloadfile(){
var temppath=document.location.pathname;
temppath=temppath.substr(1,temppath.lastIndexOf("\\")); CreateFile(mycontent.value,temppath,genfile.value);
window.open(genfile.value);
}
</script>
</head>
<body>
<input type=file id="dbfile" name="dbfile" class="inputbox" style="width:100%">
<input type=button id="showdb" name="showdb" value="打开" onclick="javascript:GetSchema(dbfile.value,tablelist)">
<select id="tablelist" name="tablelist"></select>
<input type=button id="showdb" name="showdb" value="按HTML显示" onclick="javascript:showfile(tablelist,false)">
<input type=button id="showdb" name="showdb" value="按XML显示" onclick="javascript:showfile(tablelist,true)">
<input type="hidden" id="genfile" name="genfile" value=""><button id="downloadbtn" onclick="javascript:downloadfile()" style="cursor:default" disabled="true">预览</button>
<select id="driverlist" name="driverlist" onchange="javascript:mycontent.value=this.options[this.selectedIndex].value">
<option value="">选择MDB文件的位置</option>
<option value="DSN=XXX">DSN方式</option>
<option value="DRIVER=SQL Server;SERVER=XTNOTE;User ID=sa;PASSWORD=;DATABASE=XXXX">SQL Server方式</option>
</select>
<P>
<!--
<iframe style="width:100%;height:300" src="" id="mycontent" name="mycontent"></iframe>
-->
<textarea style="width:100%;height:300" id="mycontent" name="mycontent" class="textarea01"></textarea>
</body>
</html>
前段时间正好有个项目需要把程序装入U盘的小数据库程序,pws和IIS是指望不上了,没想到javascript也可以像asp一样用.
第二个程序是一个实用的程序,在服务器上操作的时候想要查看access文件,没有装office
或者在某台客户的win98上没有装sql,如果仅仅是想查询一下数据库中某个表中的数据,一个网页就可以解决问题.
也许你早就了解了ADO,早就会写HTML,也能用access,但聪明的人定能够从中学到新的东西.
这东西当然有意思,不用装iis和pws就可以将数据保存到数据库呀!
我找了好久的,之前是问别人用纯VBScript操作数据库的。
谢谢楼主。
最新的探索心得其实 wind0209(风のFeeling) 说的很有道理,存在必然有其存在的道理,关键看你怎么样去用这种技术。XML作为数据的传输和存储甚至是以文本的方式来进行的,你能因此就低估其价值吗?如果你是担心你的程序老是弹出安全警告窗口,很简单,把扩展名由HTM改为HTA就行了。
(HTA的意思是告诉你的系统这是一个采用HTML制作的应用程序)以下是我探索的一些方向
用JS.Encode可以对JS代码加密
用encode函数可以对所有的HTML代码进行编码
用电子书chm格式可以对HTML涉及的文件进行封装
用动态生成数据库的方法可以进行程序的数据库自动化安装
常用的数据表现组件采用HTC进行对象化封装
使用HTML编写一个C#.NET数据库程序自动生成器
使用HTML编写一个具有数据库支持的桌面HTML背景(可以接收网络电视、电台、MP3)
原来JS照样可以操作数据库啊。。
想向楼主请教一个问题,JS能不能在不知在不支持ASP等编程语言的服务器上。
客户端能不能提交信息到服务器,再把表单信息添加到服务器上的数据库呢?
还用就是想向楼主请教下,在用JS使用ActiveXObject控件的时候总弹出安全
对话框,请问有没有 什么方法能在不通过认可的情况下进行操作呢?
VB,VC,等等。
何必用HTML,多伤神客户端限制太多!