js操作数据库

不知道怎么回事,自己[color=brown]竟然想用js操作sqlserver数据库[/color],有了想法后,自己便快速的做起来,几个小时就写完了,当时只是完成了最基本的功能,有些难点解决不了,后来跑去问老是,他说我做的这个没有意义,因为没有人会用前台直接操作数据库,感觉有点受打击啊,不过自己好像一下被敲醒了一样,因为我是学java的,老是对一些前台效果比较感兴趣,很喜欢用js,但是java又学的不好,感觉有点本末倒置了,本来想实现[color=darkblue]sql语句关键字变色[/color]和[color=indigo]自动补全[/color]功能,我想我应该放弃了,还是好好学习java吧。
但是我还是想把我做的这一点点东西和大家分享一下,代码写的不好,更谈不是什么性能了,还望大家谅解。做这个的目的只是为了方便自己,减少打开数据库的次数。
不知道怎么不能上传文件了,等了好久也上传不来,只好把源代码放到这里了。

<html>
<script language="javascript">
var conn,rs,rs2;
var user_id,password,catalog;
var num=0,the,tf,td,tr;
var tableStr;[color=green]//保存所查询的表,根据表名查出所有的列[/color]
[color=green]//初始化[/color]
function init(){
db.style.display="none";
sqlcommand2.style.display="none";

}
[color=green]//登录[/color]
function login(){
user_id=uname.value;
password=pwd.value;
conn = new ActiveXObject("ADODB.Connection");
try
  {
  conn.Open("Provider=SQLOLEDB.1; Data Source=localhost; User ID="+user_id+";Password="+password+"; Initial Catalog=master");
  }
catch(err)
  {
   alert("登录失败");
return;
  }

rs = new ActiveXObject("ADODB.Recordset");
rs2 = new ActiveXObject("ADODB.Recordset");
var sql="select name from sysdatabases";
rs.open(sql, conn);

while(!rs.eof){
var o = document.createElement("option");
o.text=rs(0);
o.value=rs(0);
database.add(o);
rs.movenext();
}
rs.close();
sql="select * from sys.tables";
rs.open(sql, conn);
updateTb(rs); [color=green]//得到当前数据库的所有表[/color]
conn.close();
login2.style.display="none";
db.style.display="block";
sqlcommand2.style.display="block";
}

[color=green]//得到新的conn[/color]
function getConn(db){
conn.Open("Provider=SQLOLEDB.1; Data Source=localhost; User ID="+user_id+";Password="+password+"; Initial Catalog="+db);
}

[color=green] //执行sql语句[/color]
function sqlcommand(sql){
//验证sql
var r = re(sql);
if(r=="false"){
alert("无效sql语句");
return;
}
[color=green] //得到新连接[/color]
getConn(database.value);//->51
try{
rs.open(sql, conn);
if(r!="r4"){alert("执行成功");}[color=green]//如果不是查询,则提示执行成功[/color]
}catch(err){
alert('操作失败');
conn.close();
return;
}
[color=green] //如果是查询语句,将查询结果显示到table[/color]
if(r=="r4"){
[color=green]//得到列名[/color]
// alert(tableStr);
sql= "select o.name as tbname,c.name as columnname from sys.tables as o join sys.columns as c on o.object_id=c.object_id where o.name='"+tableStr+"'"
rs2.open(sql,conn);
block(rs,rs2);[color=green]//显示[/color]
rs2.close();
rs.close();
}
conn.close();

}
[color=green]//将数据显示到table[/color]
function block(rs,rs2){
clearTable();//->95
the=document.createElement("thead");
tf=document.createElement("tfoot");
tr=document.createElement("tr");
num=0;
while(!rs2.eof){
var th=document.createElement("th");
th.innerText=rs2(1);
tr.appendChild(th);
rs2.movenext();
num++;
}
the.appendChild(tr);
ta.appendChild(the);
ta.appendChild(tf);

while(!rs.eof){
tr=document.createElement("tr");
for(var i=0;i<num;i++){
td=document.createElement("td");
td.innerText=rs(i);
tr.appendChild(td);
}
rs.movenext();
tf.appendChild(tr);
}


}
[color=green]//更新表的下拉菜单[/color]
function updateTb(rs){
clearTb();
while(!rs.eof){
var o = document.createElement("option");
o.text=rs(0);
o.value=rs(0);
mytable.add(o);
rs.movenext();
}
}
[color=green]//得到表集合[/color]
function getTables(){
getConn(database.value);
var sql="select * from sys.tables";
rs.open(sql, conn);
updateTb(rs);
rs.close();
conn.close();
}

[color=green] //清除table[/color]
function clearTable(){
ta.deleteTHead();
ta.deleteTFoot();
}
[color=green]//删除下拉框mytable[/color]
function clearTb(){
mytable.length=0;
}

[color=green]//得到选中的字符串[/color]
function getSelectionText() {
//window.getSelection().toString()适用于safari,opera,chrome,firefox
//document.selection.createRange().text适用于IE
if(window.getSelection) {
return window.getSelection().toString();
} else if(document.selection && document.selection.createRange) {
if(document.selection.createRange().text==""){
return textarea.innerText;
}
return document.selection.createRange().text;
}
return textarea.innerText;[color=green]//如果没选择就返回所有[/color]
}
[color=green]//用正则验证sql语句[/color]
function re(str){[color=green]//功能未写完[/color]
var r1 = /insert\s+(into\s+)?\S+\s+values\((\s*\S+\s*)(\s*,\s*\S+\s*)*\);?$/;
var r2 = /delete\s+(from)?\s*(\S+)\s*(\s*where\s+\S+\s*)?(\s*and\s+\S+)*\s*$/;
var r3 = /update\s+\S+\s+set\s+\S+\s*(\s*,\s*\S+\s*)*(\s*where\s+\S+\s*)?(\s*and\s+\S+)*\s*$/;
var r4 = /\s*select\s+.+from\s+(\S+)\s*(\s+where\s+\S+)?\s*(and\s+\S+)*\s*$/;
var r5 =/create/;
var r6 =/drop/;
//var r7 =/给关键字改变颜色/
if(r1.test(str)){
return "r1";
}else if(r2.test(str)){
return "r2";
}else if(r3.test(str)){
return "r3";
}else if(r4.test(str)){
tableStr = str.replace(r4, "$1");
return "r4";
}else if(r5.test(str)){
return "r5";
}else if(r6.test(str)){
return "r6";
}else{
return "false"
}
}
[color=green]//代码自动完成 就像eclipse里的alt+/[/color]
function myAutomatic(){
//等待实现

}
[color=green]//关键字变色[/color]
function keywordsChangeColor(){ [color=green]//等待实现[/color]

}

</script>


<body οnlοad="init()">
<div id="login2">
<input type="text" id="uname">
<input type="password" id="pwd">
<input type="button" value="登录" οnclick="login()">
</div>
[color=violet]<!-- 显示所有的数据库和对应的表 -->[/color]
<div id="db">
选择数据库
<select id="database" οnchange="getTables()">
</select>
<select id="mytable">
</select>
<input type="button" value="执行sql语句" οnclick="sqlcommand(getSelectionText())">
</div>
[color=violet]<!-- 写sql语句的地方 -->[/color]
<div id="sqlcommand2">
<textArea rows=20 cols=80 id="textarea" style="background-color:red">
</textArea>
</div>
[color=violet]<!-- 显示查询出的数据 -->[/color]
<div id="view">
<table border="1" id="ta"">
</table>
</div>
[color=violet]<!-- 代码自动完成的信息 -->[/color]
<div id="automatic">
</div>
</body>
<html>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值