js操作数据库
① js 如何读取数据库信息
javaScript读取数据库信息的方法如下:
JavaScript 本身作为客户端脚本语言,无法直接读取服务器端的数据库。但可以通过以下步骤间接获取数据库信息:
使用Ajax请求:
- JavaScript可以通过Ajax技术向服务器端发送请求。
- 这个请求可以是一个HTTP GET或POST请求,具体取决于你的需求和服务器端接口的设计。
服务器端脚本处理请求:
- 服务器端需要有一个脚本来处理这个请求,这个脚本可以是PHP、Python、Node.js等编写的。
- 服务器端脚本连接到数据库,并执行相应的sql查询或数据库操作来获取数据。
服务器端返回数据:
- 服务器端脚本将查询结果或数据库操作的结果转换为适当的格式,并通过HTTP响应返回给客户端。
- response.write是其中一种方式,但在现代Web开发中,更常见的是使用JSON格式的数据,并通过res.json或类似的函数返回数据。
JavaScript处理响应:
- Ajax请求的回调函数会接收到服务器返回的响应数据。
- JavaScript可以解析这些数据,并在页面上使用这些数据。
示例流程:
- 客户端:使用JavaScript的fetch或XMLHttpRequest对象发送Ajax请求到服务器。
- 服务器端:接收请求,执行数据库查询,获取数据,将数据转换为JSON格式,并通过HTTP响应返回。
- 客户端:接收响应,解析JSON数据,并在页面上使用这些数据。
这种方法确保了数据库的安全性和隐私性,因为数据库访问逻辑在服务器端执行,客户端只能通过服务器端提供的接口获取数据。
② 如何用javascript操作access数据库
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文件下载下来进行分析,所以没办法用它来保存一些不想让别人知道的东西。
③ js如何连接和操作腾讯云mysql数据库
首先是登陆腾讯云,登陆之后可以领取新手礼包,如图
- var mysql = require(‘mysql’);
- var connection = mysql.createConnection({
- host:'',
- user:'root',
- password:'123abc',
- database:' nodejs',
- port:6445
- })
- connection.connect();
- /**
- * 增加员工
- */function addEmployee(){
- var employeeInsertSql = 'INSERT INTO employee(name,sex,age,email) VALUES(?,?,?,?)';
- var employeeInsertSql_Params = ['Tim','男',22,'[email protected]']
- connection.query(employeeInsertSql,employeeInsertSql_Params,function(err,result){
- if(err) console.log('[INSERT ERR]-',err.message);
- console.log(result);
- }) }addEmployee()
- }
- /**
- * 更新员工
- */
- function insertEmployee(){
- var employeeUpdateSql = "UPDATE employee SET name = ? WHERE age =?";
- var employeeUpdateSql_Params = ['Peter',22];
- connection.query(employeeUpdateSql,employeeUpdateSql_Params,function(err,result){
- if(err) console.log('[UPDATE ERR]-',err.message);
- console.log(result);
- })}
- insertEmployee();
- /**
- *查询员工
- */ function getEmployee(){
- var employeeGetSql = "SELECT * FROM employee";
- connection.query(employeeGetSql,function(err,result){
- if(err) console.log('[SELECT ERR]-',err.message);
- console.log(result);
- })}
- /**
- *删除员工
- */ function deleteEmployee(){
- var employeeDeleteSql = "DELETE employee WHERE name = ?";
- var employeeDeleteSql_Params = 'Peter';
- connection.query(employeeDeleteSql,employeeDeleteSql_Params,function(err,result){
- if(err) console.log('[DELETE ERR]-',err.message);
- console.log(result);
- })
- }deleteEmployee();
- var mysql = require('mysql');var connection = mysql.createConnection({
- host:'',
- user:'root',
- password:'',
- database:'nodejs',
- port:})connection.connect();/**
- * 增加员工
- * @param {String} employee
- * @param {Function} callback
- */exports.addEmployee=function(employee,callback){
- var employeeInsertSql = 'INSERT INTO employee(name,sex,age,email) VALUES(?,?,?,?)';
- var employeeInsertSql_Params = [employee.name,employee.sex,employee.age,employee.email]
- connection.query(employeeInsertSql,employeeInsertSql_Params,callback)}/**
- * 更新员工
- * @param {String} employee
- * @param {Function} callback
- */exports.updateEmployee = function(name,age){
- var employeeUpdateSql = "UPDATE employee SET name = ? WHERE age =?";
- var employeeUpdateSql_Params = ['Peter',22];
- connection.query(employeeUpdateSql,employeeUpdateSql_Params,function(err,result){
- if(err) console.log('[UPDATE ERR]-',err.message);
- console.log(result);
- })}/**
- * 查询员工
- *
- */exports.getEmployee = function(){
- var employeeGetSql = "SELECT * FROM employee";
- connection.query(employeeGetSql,callback)}/**
- * 删除员工
- * @param {String} name
- */exports.deleteEmployee = function(name){
- var employeeDeleteSql = "DELETE employee WHERE name = ?";
- var employeeDeleteSql_Params = 'Peter';
- connection.query(employeeDeleteSql,employeeDeleteSql_Params,callback)
- }再在根目录下新建index.js,代码如下var db = require('./model/employee_two');//增加员工var employee = {
- name:'lisa',
- age:22,
- sex:"女",
- email:'[email protected]'}db.addEmployee(employee,function(err,result){
- if(err) console.log("[INSERT err]-",err.message)
- console.log(result);})//删除员工db.deleteEmployee('Peter',function(err,result){
- if(err) console.log("[DELETE err]-",err.message)
- console.log(result);})//更新员工db.updateEmployee('Tim',23,function(err,result){
- if(err) console.log("[UPDATE err]-",err.message)
- console.log(result);})//查询员工db.getEmployee(function(err,result){
- if(err) console.log("[GET err]-",err.message)
- console.log(result);})
1.在实例上上新建一个为nodejs的数据库,然后新建一个为employee的表,新建四个字段 name sex age email除了年龄为int其它的全部为varchar格式
2.新建一个TimLiu的文件夹,打开cmd,cd TimLiu, 初始化项目npm init ,按照它的提示一步一步的操作即可,安装mysql模块,npm insitall mysql, 这个模块的作用主要是连接mysql数据库。
3.新建一个model.js 文件,
这里的host为我们在腾讯云上开通的外地址,端口号也是在外网地址里面,注意要把外网地址写分开,用户为默认的管理员用户,密码为我们在云平台上设置的密码,数据库为我们创建的nodejs数据库。
接下来我们对数据库进行增删改查操作
getEmployee();
这样我们就可以愉快的操作数据库了
如果大家想把项目更模块化操作,可在model下面新建一个employee_two.js,代码如下