如何用javascript操作access数据库
方法和详细的操作步骤如下:
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"
文本文件名为 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语法则应这样写...
逮松颈痛: 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!"; 我们在上面脚本创建了字符串,但本质上,它们并不是真正的字符串对象,准确地说,...