如何用javascript操作access数据库

作者&投稿:沙眉 (若有异议请与网页底部的电邮联系)
JAVASCRIPT如何操作数据库?~

方法和详细的操作步骤如下:
1、第一步,打开HBuilder工具,并在Web项目的js文件夹中创建一个新的JavaScript文件ConnDB.js,使用require()引入mysql模块,然后将该值分配给变量mysq,见下图,转到下面的步骤。


2、第二步,完成上述步骤后,调用createConnection()方法设置主机,用户名,密码,端口并返回数据,见下图,转到下面的步骤。



3、第三步,完成上述步骤后,调用mysql模块中的connect()方法以连接到mysql数据,见下图,转到下面的步骤。



4、第四步,完成上述步骤后,编写查询语句SQL并将其作为字符串分配给变量sq,见下图,转到下面的步骤。



5、第五步,完成上述步骤后,调用query(),根据返回值判断结果,然后打印返回,见下图。这样,就解决了这个问题了。



常用数据库语句

  1.SELECT 语句:命令数据库引擎从数据库里返回信息,作为一组记录。
  2.INSERT INTO 语句:添加一个或多个记录至一个表。
  3.UPDATE 语句:创建更新查询来改变基于特定准则的指定表中的字段值。
  4.DELETE 语句:创建一个删除查询把记录从 FROM 子句列出并符合 WHERE 子句的一个或更多的表中清除。
  5.EXECUTE 语句:用于激活 PROCEDURE(过程)

用 ASP 来做一个自己的通讯录练练手吧……

一、建立数据库:

  用 Microsoft Access 建立一个名为 data.mdb 的空数据库,使用设计器创建一个新表。输入以下几个字段:

  字段名称  数据类型  说明      其它
  ID     自动编号  数据标识    字段大小:长整型 新值:递增 索引:有(无重复)
  username  文本    姓名      缺省值
  usermail  文本    E-mail     缺省值
  view    数字    查看次数    字段大小:长整型 默认值:0 索引:无
  indate   时间日期  加入时间    缺省值

  保存为 data.mdb 文件,为了便于说明,只是做了一个比较简单的库。

二、连接数据库

  方法1:
  Set conn = Server.CreateObject("ADODB.Connection")
  conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq="&Server.MapPath("data.mdb")

  方法2:
  Set conn = Server.CreateObject("ADODB.Connection")
  conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath("data.mdb")

  注意:一个页面中,只要连接一次就可以了,数据库使用完后要及时关闭连接。
  conn.Close
  Set conn = Nothing

三、添加新记录到数据库

  Set conn = Server.CreateObject("ADODB.Connection")
  conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq="&Server.MapPath("data.mdb")

  username = "风云突变"
  usermail = "ec0705liujuan@163.com"
  indate = Now()

  sql = "insert into data (username,usermail,indata) values('"&username&"','"&usermail&"','"&indate&"')"
  conn.Execute(sql)

  conn.Close
  Set conn = Nothing

  说明:建立数据库连接;通过表单获取姓名、E-mail 字符串,Now()获取当前时间日期;使用 insert into 语句添加新记录;conn.Execute 来执行;最后关闭。

四、选择数据库里的记录

  1.选择所有记录的字段(按记录倒序排序):sql = "select * from data order by ID desc"
  2.选择所有记录的姓名和E-mail字段(不排序):sql = "select username,usermail from data"
  3.选择姓名为“风云突变”的所有记录:sql = "select * from data where username='"风云突变"'"
  4.选择使用 163 信箱的所有记录(按查看次数排序):sql = "select * from data where usermail like '%"@163.com"%' order by view desc"
  5.选择最新的10个记录:sql = "select top 10 * from data order by ID desc"

  SQL 语句已经知道了,不过在Web应用时,还得创建一个 RecordSet 对象得到记录集,才能把从数据库里取出的值应用在网页上,如果现在将所有的记录显示在网页上就这样:

  Set conn = Server.CreateObject("ADODB.Connection")
  conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq="&Server.MapPath("data.mdb")

  sql = "select * from data"
  Set rs = Server.CreateObject("ADODB.RecordSet")
  rs.Open sql,conn,1,1

  Do While Not rs.Eof
    Response.Write "姓名:"& rs("username") &" E-mail:"& rs("usermail") &" 查看:"& rs("view") &"次 "& rs("indate") &"加入"
    rs.MoveNext
  Loop

  rs.Close
  Set rs = Nothing
  conn.Close
  Set conn = Nothing

  说明:建立数据库连接;创建 rs 得到记录集;循环显示记录,rs.Eof 表示记录末,rs.MoveNext 表示移到下一个记录;最后关闭。

五、修改(更新)数据库记录

  修改记录的E-mail:

  Set conn = Server.CreateObject("ADODB.Connection")
  conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq="&Server.MapPath("data.mdb")

  ID = 1
  usermail = "ec0705liujuan@163.com"

  sql = "update data set usermail='"&usermail&"' where ID="&CInt(ID)
  conn.Execute(sql)

  conn.Close
  Set conn = Nothing

  说明:建立数据库连接;获取记录ID、新 E-mail 字符串;使用 update 语句修改记录;conn.Execute 来执行;最后关闭。
  如果使记录的查看值加1,则:sql = "update data set view=view+1 where ID="&CInt(ID)

六、删除数据库记录

  删除某一条记录:

  Set conn = Server.CreateObject("ADODB.Connection")
  conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq="&Server.MapPath("data.mdb")

  ID = 1

  sql = "delete from data where ID="&CInt(ID)
  conn.Execute(sql)

  conn.Close
  Set conn = Nothing

  说明:建立数据库连接;获取记录ID;使用 delete 语句删除记录;conn.Execute 来执行;最后关闭。
  删除多条记录为:sql = "delete from data where ID in (ID1,ID2,ID3)"
  删除所有记录为:sql = "delete from data"

1.Access数据库名为 MyData.Mdb, 里面建了一个名为count的表,表由两个 字段组成: ID和COUNT,表里有一条数据: ('count','100')。
文本文件名为 count.txt,里面随便写入一个数字。
静态页面名为Cnt.htm。
2.以上3个文件都放在同一目录下。
由于采用Access数据库,而它采用非标准SQL语法,所以要注意在表名和字段名上需要加方括号: []
3.下面是页面里的代码:其中getCountFromDB方法是对Access数据库进行操作,getCountFromTxt方法是对txt纯文本进行操作,这两个方法都在本地执行通过。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
<SCRIPT LANGUAGE="JavaScript">
<!--
function getCountFromDB() {
//以当前页面文件为基础,找到文件所在的绝对路径。
var filePath = location.href.substring(0, location.href.indexOf("Cnt.htm"));
var path = filePath + "MyData.mdb";
//去掉字符串中最前面的"files://"这8个字符。
pathpath = path.substring(8);
var updateCnt = 0;

//生成查询和更新用的sql语句。
var sqlSelCnt = "SELECT COUNT FROM [COUNT] WHERE ID = 'count'";
var sqlUpdCnt = "UPDATE [COUNT] SET [COUNT] = '";

//建立连接,并生成相关字符串 www.knowsky.com。
var con = new ActiveXObject("ADODB.Connection");
con.Provider = "Microsoft.Jet.OLEDB.4.0";
con.ConnectionString = "Data Source=" + path;

con.open;
var rs = new ActiveXObject("ADODB.Recordset");
rs.open(sqlSelCnt, con);
while (!rs.eof) {
var cnt = rs.Fields("COUNT");
document.write(cnt);
//将取得结果加1后更新数据库。
updateCnt = cnt * 1 + 1;
rs.moveNext;
}
rs.close();
rs = null;

sqlUpdCntsqlUpdCnt = sqlUpdCnt + updateCnt + "'";
con.execute(sqlUpdCnt);

con.close();
con = null;
}

function getCountFromTxt() {
var filePath = location.href.substring(0, location.href.indexOf("Cnt.htm"));
var path = filePath + "count.txt";
pathpath = path.substring(8);
var nextCnt = 0;

var fso, f1, ts, s;
//以只读方式打开文本文件。
var ForReading = 1;
//以读写方式打开文本文件。
var ForWriting = 2;

fso = new ActiveXObject("Scripting.FileSystemObject");
f1 = fso.GetFile(path);
ts = f1.OpenAsTextStream(ForReading, true);
s = ts.ReadLine();
nextCnt = eval(s) + 1;
document.write("now count is :" + s);
ts.Close();

ts = f1.OpenAsTextStream(ForWriting, true);
ts.WriteLine(nextCnt);
ts.close();
}
//-->
</SCRIPT>
</HEAD>

<BODY>
<SCRIPT LANGUAGE="JavaScript">
<!--
getCountFromTxt();
//-->
</SCRIPT>
</BODY>
</HTML>
4.用这种方法来读写数据库,只适合做计数器和留言版这样的不需要保密性的工作,毕竟代码全是用javascript写成的,谁都可以看到,然后就可以得到路径把db文件下载下来进行分析,所以没办法用它来保存一些不想让别人知道的东西。

这几天费了挺大力气在网上查找javascript连接access数据库的方法,
经过整理总结,终于写出一段能够有效执行的代码。

但是这段代码在本地可以正常运行,一旦放到免费个人空间上就没法执
行了,主要原因就是操作权限不够,由于只支持静态页面的免费空间多数都
作了非常严格的限制,所以无论是用mdb的方式,还是读写纯文本文件的方式
都没办法通过,而由页面报出js错误。国外的一些免费空间,直接就禁止mdb
这样扩展名的文件上传。

虽然没希望在纯静态页面的免费空间上作自己的计数器或是留言版,但是
这段程序也许还是对一些朋友有用处,写出来供各位研究一下。

文件构成:
Access数据库名为 MyData.Mdb, 里面建了一个名为count的表,表由两个
字段组成: ID和COUNT,表里有一条数据: ('count','100')。
文本文件名为 count.txt,里面随便写入一个数字。
静态页面名为Cnt.htm。
以上3个文件都放在同一目录下。

由于采用Access数据库,而它采用非标准SQL语法,所以要注意在表名
和字段名上需要加方括号: []

下面是页面里的代码:

其中getCountFromDB方法是对Access数据库进行操作,getCountFromTxt
方法是对txt纯文本进行操作,这两个方法都在本地执行通过。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
<SCRIPT LANGUAGE="JavaScript">
<!--
function getCountFromDB() {
//以当前页面文件为基础,找到文件所在的绝对路径。
var filePath = location.href.substring(0, location.href.indexOf("Cnt.htm"));
var path = filePath + "MyData.mdb";
//去掉字符串中最前面的"files://"这8个字符。
path = path.substring(8);
var updateCnt = 0;

//生成查询和更新用的sql语句。
var sqlSelCnt = "SELECT COUNT FROM [COUNT] WHERE ID = 'count'";
var sqlUpdCnt = "UPDATE [COUNT] SET [COUNT] = '";

//建立连接,并生成相关字符串 www.knowsky.com。
var con = new ActiveXObject("ADODB.Connection");
con.Provider = "Microsoft.Jet.OLEDB.4.0";
con.ConnectionString = "Data Source=" + path;

con.open;
var rs = new ActiveXObject("ADODB.Recordset");
rs.open(sqlSelCnt, con);
while (!rs.eof) {
var cnt = rs.Fields("COUNT");
document.write(cnt);
//将取得结果加1后更新数据库。
updateCnt = cnt * 1 + 1;
rs.moveNext;
}
rs.close();
rs = null;

sqlUpdCnt = sqlUpdCnt + updateCnt + "'";
con.execute(sqlUpdCnt);

con.close();
con = null;
}

function getCountFromTxt() {
var filePath = location.href.substring(0, location.href.indexOf("Cnt.htm"));
var path = filePath + "count.txt";
path = path.substring(8);
var nextCnt = 0;

var fso, f1, ts, s;
//以只读方式打开文本文件。
var ForReading = 1;
//以读写方式打开文本文件。
var ForWriting = 2;

fso = new ActiveXObject("Scripting.FileSystemObject");
f1 = fso.GetFile(path);
ts = f1.OpenAsTextStream(ForReading, true);
s = ts.ReadLine();
nextCnt = eval(s) + 1;
document.write("now count is :" + s);
ts.Close();

ts = f1.OpenAsTextStream(ForWriting, true);
ts.WriteLine(nextCnt);
ts.close();
}
//-->
</SCRIPT>
</HEAD>

<BODY>
<SCRIPT LANGUAGE="JavaScript">
<!--
getCountFromTxt();
//-->
</SCRIPT>
</BODY>
</HTML>

后记:虽然在只支持静态页面的免费空间不可用,但是我想一些支持
Asp的免费空间应该能用,当然我没有具体试过,只是凭自己想象。
并且用这种方法来读写数据库,只适合做计数器和留言版这样的不需
要保密性的工作,毕竟代码全是用javascript写成的,谁都可以看到,
然后就可以得到路径把db文件下载下来进行分析,所以没办法用它来
保存一些不想让别人知道的东西。
就像我一个同事说的,用javascript连接数据库进行操作,简直就是
霸王硬上弓,呵呵,的确如此,既然不能用在免费空间上作自己的计
数器,那这段代码就只能用来玩玩,自己找找良好感觉了。

如果只用javascript是不能操作数据库的,必须配合其他脚本语言。

http://www.baidu.com/s?ie=gb2312&bs=javascript+acces&sr=&z=&cl=3&f=8&wd=javascript+access&ct=0


在javascrpt中wondow对象的哪个方法用于打开一个新窗口
open()方法,用法:window.open("a.html");你可以弄个按钮,并将改方法弄到函数里面,点击之后会调用该方法

java是javascript的简称吗?还是根本就是两个东西?
java和javascript几乎没有什么关系,java是一门面向对象的语言,有自己的IDE,在虚拟机上执行,执行前需要完整编译。javascrpit则是一种脚本语言,它是依附在浏览器上解释执行的,也就是一边执行一行一边解释下一行。只不过javascrpit的基本语法和java比较相似。

编程语言:javascrpt语言:判断如果a>60用自定义函数计算40、56、80,3...
function cout(a , b,c){ var aa=(a+b+c)\/3;return aa;} if(a>60){ var cout=cout(40,56,80);}

为什么 javascrpit 计算日期相差天数,要这样写?
这里是因为,如果直接2002-12-18转换成Date型的话,会报错,因为new Date()不支持yyyy-mm-dd这种格式,所有做了转换,但是这种转换方法太费劲。它用的是new Date('mm-dd-yyyy')这种格式来进行转换,其实有更简单的,就是用new Date('yyyy\/mm\/dd')这种来进行。使用的时候也简单 new Date(str....

Java Web开发jsp注册页面怎样用javaScript代码直接在页面上注册内容后面...
可以实现的,如果你是要在注册文本框后面显示的话可以增加一个span,然后在javascript中获取到文本框的值,然后传给span,注册名: <javascrpt代码> function back(){ var username=document.f.username.value;document.getElementsbyId("s").innerHTML=username;} ...

java与javascript有什么不同?
在HTML文档中,两种编程语言的标识不同,JavaScript使用 来标识,而Java使用...来标识。6

Javascricpt的程序处理时间的表示问题?
可以用Date.now()获取毫秒数,示例如下:curMillSecs=Date.now(); \/\/获取毫秒数 sleep(2000); \/\/休眠2000毫秒,即2秒 console.log(Date.now()-curMillSecs); \/\/控制台打印执行休眠2秒的毫秒差 function sleep(time){ var startTime = new Date().getTime()+parseInt(time, 10);while(...

这个javascrpipt的页面怎么实现?
① 先让那个一级菜单显示,其他的兄弟级元素隐藏,就是$('div').show().siblings().hide();

js和java的区别
代码格式不一样。补充:上面列出的四点是网上流传的所谓的标准答案。其实Java和JavaScript最重要的区别是一个是静态语言,一个是动态语言。目前的编程语言的发展趋势是函数式语言和动态语言。在Java中类(class)是一等公民,而JavaScript中函数(function)是一等公民,因此JavaScript支持函数式编程,可以使用...

ASP与javascrpt的混合编程问题
1、tjnews.asp到底是ASP文件还是JS文件?答案:是asp文件 2javastr=javastr+""我指的是为什么用\\",不直接用'',也就是为什么不写成:答案:\/"是转义字符,它的意思就是在文本中写出"这个东西 如果你想在前台文件中写出一个" ,那么在js语法中是这样写的document.write "\\""而asp语法则应这样写...

鹿泉市18993247690: javascript如何使用 -
逮松颈痛: javascript目前是网页前端最强大的语言,可以用来制作页面特效,表单验证,ajax应用等.<br>使用的时候直接以文本方式嵌入html中就可以了<br>1、可以用script标签引入<br><script type="text/javascript" src="js文件路径"></script><br>2、...

鹿泉市18993247690: 如何在js中判断两个字符串a,b相同 a=b?? -
逮松颈痛: 在javascript判断两个变量值是否相等,可以使用 ==(等同)操作符 或者 ===(恒等)操作符<br><br><br><br>1. == 操作符<br>“等同”操作符,简单判断2个变量值是否相等,变量类型不一致时,会做类型转换,即忽略变量的类型进行比较<br...

鹿泉市18993247690: 在js中如何把两个随机数之和控制在十以内 -
逮松颈痛: 先产生2个10以内的 随机数 A 和B 然后 用A-B 或 B-A 得到C AC 或 BC 就是你要的

鹿泉市18993247690: jquery,javascript 控制html元素 span 类 例<div id="ad"><span class="abc"></span></div> -
逮松颈痛: jquery,javascript 控制html元素 span 类例$("#ad span").removeClass("abc").addClass(...

鹿泉市18993247690: 如何在IOS平台上使用js直接调用OC方法 -
逮松颈痛: 使用示例:<br>下面的示例代码将调用上面NativeOcClass的方法,在js层只需要这样调用:<br> var ret = jsb.reflection.callStaticMethod("NativeOcClass", <br> "callNativeUIWithTitle:andContent:", <br> "cocos2d-js", <br> "Yes! you call a ...

鹿泉市18993247690: 在HTML<a>标签里的参数出现abc=1是什么意思? -
逮松颈痛: 那是一个自定义属性,对于浏览器来说没有意义,浏览器会忽略自定义属性,但是可以使用js存取自定义操作,自定义属性名与变量命名相似,你可以利用自定义属性在标签中存储一些数据,然后由js来读取和使用.

鹿泉市18993247690: Java中使用javascript实现计算器功能怎么做呢?
逮松颈痛: 不废话,直接上代码:Java代码 package org.galo.thread; import java.util.... private static final String QUIT_MESSAGE = "感谢您的使用,再见!"; private static ...

鹿泉市18993247690: js 分离括号左右两边的字符 例 var s = "A(a,b,c)B(1,2,3)" 想得到 "A" "a,b,c" "B" "1,2,3"四个字符串 -
逮松颈痛: 这个主要用js的split函数就可以实现.写了段代码,希望对你有帮助!var s = "A(a,b,c)B(1,2,3)" ; var v1= s.split("(");//以"("分割 var pm1 = v1[0];//A var v2= v1[1].split(")");//以")"分割 var pm2 = v2[0];//a,b,c var pm3 = v2[1];//B var v2= v1[2].split(")");//以")"分割 var pm4 = v2[0];//1,2,3

鹿泉市18993247690: 如何用JavaScript操作字符串 -
逮松颈痛: 1、字符串的创建 创建一个字符串有几种方法.最简单的是用引号将一组字符包含起来,可以将其赋值给一个字符串变量.var myStr = "Hello, String!"; 我们在上面脚本创建了字符串,但本质上,它们并不是真正的字符串对象,准确地说,...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网