不知道怎么回事,自己
竟然想用js操作sqlserver数据库,有了想法后,自己便快速的做起来,几个小时就写完了,当时只是完成了最基本的功能,有些难点解决不了,后来跑去问老是,他说我做的这个没有意义,因为没有人会用前台直接操作数据库,感觉有点受打击啊,不过自己好像一下被敲醒了一样,因为我是学java的,老是对一些前台效果比较感兴趣,很喜欢用js,但是java又学的不好,感觉有点本末倒置了,本来想实现
sql语句关键字变色和
自动补全功能,我想我应该放弃了,还是好好学习java吧。
但是我还是想把我做的这一点点东西和大家分享一下,代码写的不好,更谈不是什么性能了,还望大家谅解。做这个的目的只是为了方便自己,减少打开数据库的次数。
不知道怎么不能上传文件了,等了好久也上传不来,只好把源代码放到这里了。
<html>
<script language="javascript">
var conn,rs,rs2;
var user_id,password,catalog;
var num=0,the,tf,td,tr;
var tableStr;
//保存所查询的表,根据表名查出所有的列
//初始化
function init(){
db.style.display="none";
sqlcommand2.style.display="none";
}
//登录
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);
//得到当前数据库的所有表
conn.close();
login2.style.display="none";
db.style.display="block";
sqlcommand2.style.display="block";
}
//得到新的conn
function getConn(db){
conn.Open("Provider=SQLOLEDB.1; Data Source=localhost; User ID="+user_id+";Password="+password+"; Initial Catalog="+db);
}
//执行sql语句
function sqlcommand(sql){
//验证sql
var r = re(sql);
if(r=="false"){
alert("无效sql语句");
return;
}
//得到新连接
getConn(database.value);//->51
try{
rs.open(sql, conn);
if(r!="r4"){alert("执行成功");}
//如果不是查询,则提示执行成功
}catch(err){
alert('操作失败');
conn.close();
return;
}
//如果是查询语句,将查询结果显示到table
if(r=="r4"){
//得到列名
// 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);
//显示
rs2.close();
rs.close();
}
conn.close();
}
//将数据显示到table
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);
}
}
//更新表的下拉菜单
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();
}
}
//得到表集合
function getTables(){
getConn(database.value);
var sql="select * from sys.tables";
rs.open(sql, conn);
updateTb(rs);
rs.close();
conn.close();
}
//清除table
function clearTable(){
ta.deleteTHead();
ta.deleteTFoot();
}
//删除下拉框mytable
function clearTb(){
mytable.length=0;
}
//得到选中的字符串
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;
//如果没选择就返回所有
}
//用正则验证sql语句
function re(str){
//功能未写完
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"
}
}
//代码自动完成 就像eclipse里的alt+/
function myAutomatic(){
//等待实现
}
//关键字变色
function keywordsChangeColor(){
//等待实现
}
</script>
<body onload="init()">
<div id="login2">
<input type="text" id="uname">
<input type="password" id="pwd">
<input type="button" value="登录" onclick="login()">
</div>
<!-- 显示所有的数据库和对应的表 -->
<div id="db">
选择数据库
<select id="database" onchange="getTables()">
</select>
<select id="mytable">
</select>
<input type="button" value="执行sql语句" onclick="sqlcommand(getSelectionText())">
</div>
<!-- 写sql语句的地方 -->
<div id="sqlcommand2">
<textArea rows=20 cols=80 id="textarea" style="background-color:red">
</textArea>
</div>
<!-- 显示查询出的数据 -->
<div id="view">
<table border="1" id="ta"">
</table>
</div>
<!-- 代码自动完成的信息 -->
<div id="automatic">
</div>
</body>
<html>
- 大小: 16.6 KB
- 大小: 22.9 KB
- 大小: 25.8 KB
分享到:
相关推荐
JavaScript操作数据库JavaScript操作数据库
js操作数据库源码js操作数据库源码js操作数据库源码
NULL 博文链接:https://javasam.iteye.com/blog/1848604
js操作数据库
js操作数据库.txtjs操作数据库.txtjs操作数据库.txtjs操作数据库.txtjs操作数据库.txtjs操作数据库.txtjs操作数据库.txtjs操作数据库.txtjs操作数据库.txt
js操作数据库
javascript是主要的网站开发脚本语言 , 动态网站都需要数据库 , 值得一看 , 谢谢支持!
自从node-js出现之后,不只是java,php等后端语言可以操作数据库,进行内容的增删改查,javascript简本语言同样具备了该项技能,而且在node下,js具备了很强的操作性和代码的阅读性,让晦涩难懂的代码变得更加的清晰...
JavaScript操作数据库.ppt
很详细的插件集 包括ajaxComboBox 超链接提示 漂亮js表单验证 漂亮js弹出框 漂亮表单 漂亮的图片js浏览 消息通知 ACCESSdb-v0.9.2.zip JS 操作access数据库 jquery加载效果
第18章 JavaScript操作数据库
js静态页面链接数据库并操作数据库,又需要详细了解的可以+QQ240346984
JavaScript操作SQLite数据库Demo,不需要安装软件,可直接操作SQLite数据库。(推荐下载SQLiteStudio查看生成的数据是否正确)。
(源代码),JAVASCRIPT修改,新增,删除ACCESS数据库(操作).不需要架设WEB服务器,离线本地操作ACCESS数据库。支持PHP,ASP,.NET,JAVA.
js操作数据库
javascript对数据库作增删该查操作
介绍了JS操作数据库的实例代码,有需要的朋友可以参考一下
#js操作数据库 #nodejs操作mysql数据库 Node.js 是一种非常流行的服务器端 JavaScript 运行环境,开发者们可以使用 Node.js 来快速、高效地开发出服务器端应用程序。MySQL 则是一种广泛使用的关系型数据库管理系统,...