当前位置:首页 » 数据仓库 » js操作mysql数据库
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

js操作mysql数据库

发布时间: 2022-09-03 02:28:22

Ⅰ JAVASCRIPT如何操作数据库

方法和详细的操作步骤如下:

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

Ⅱ javascript里操作mysql数据库

ajax像服务器发送请求

varxmlhttp=window.XMLHttpRequest?newXMLHttpRequest():newActiveXObject("Microsoft.XMLHTTP");
//创建xmlhttp对象
xmlhttp.onreadystatechange=func;
xmlhttp.open("post/get","接收页面",true)
//如果是get传值,接收页面后面带参数
xmlhttp.send(data);
//如果是get则data为null
functionfunc(){
if(xmlhttp.readyState==4){
if(xmlhttp.status==200){
请求成功后执行的代码
}
}
}
接收页面根据传递来的data进行连接数据库操作

Ⅲ js如何从mysql读取数据库啊

avaScript DataBase Connector
JSDBC:提供Javascript有效的连接数据库,目前支持MySQL、SQLite、ACCESS,后期会支持更多的数据库;
在从事AJAX开发的工程师肯定会希望有一个通过AJAX直接连接数据库的组件,这样,可以省掉后台很多的操作步骤,比如免去了部署JAVA的运行环境,免去了写很多复杂的JDBC调用,不管出于调试的需要还是应用的需要,JSDBC都能够很好的集成到您的应用当中。

/**
* 类说明:该脚本主要是实现与JSDBC for MySQL 连接,方便用户在js直接使用MySQL
* 创建事件: 3333
*/
//Include OCX Object
document.writeln(" <OBJECT id='mysql' classid='clsid:9C579403-6745-4695-B14C-96212D319F18'");
document.writeln(" codebase='JSDBC_MySQL.ocx#Version=1,0,0,000'");
document.writeln(" WIDTH='0' HEIGHT='0'>");
document.writeln(" </OBJECT>");
//error message
var lasterr = "";
//Exec Falg
var execFlag;
/**
* Connecte to mysql server
* provite:MySQL IP,PORT,DB Name,USER,Password,CharSet
*/
function connectMySQL()
{
execFlag = mysql.connecte("127.0.0.1","3306","testdb","root","123210","GBK");
if(execFlag == 1)
return 1;
else
{
lasterr = mysql.getLastError();
return 0;
}
}
/**
* Close already open Connection
*/
function closeMySQL()
{
execFlag = mysql.close();
if(execFlag == 1)
return 1;
else
{
lasterr = mysql.getLastError();
return 0;
}
}
/**
* Exec Insert Into SQL statement
* @param {Object} sql
*/
function insertMySQL(sql)
{
execFlag = mysql.insertData(sql);
if(execFlag == 1)
return 1;
else
{
lasterr = mysql.getLastError();
return 0;
}
}
/**
* Exec DataBase Manager Language
* @param {Object} sql
*/
function execDMLMySQL(sql)
{
execFlag = mysql.execDML(sql);
if(execFlag == 1)
return 0;
else
{
lasterr = mysql.getLastError();
return 0;
}
}
/**
* Exec Select Data From DataBase
* @param {Object} sql
* @param {Object} cnum == Number of fields in SQL statement
*/
function selectMySQL(sql,cnum)
{
var rs = mysql.selectData(sql,cnum);
if(rs.length > 0)
{
var array = new Array();
var DataSet = new Array();
var rowsplit = '';//行间隔 ,注意,这并不是普通的'-',而是0x06 转换而来的,使用时拷贝过去即可
var fieldsplit ='';//字段间隔,注意,这并不是普通的'|',而是0x05 转换而来的,使用时拷贝过去即可

array = rs.split(rowsplit);
for(var i = 0;i < array.length; i++)
{
var DataRow = array[i].split(fieldsplit);
DataSet[i] = DataRow;
}
return DataSet;
}
else
{
lasterr = mysql.getLastError();
return null;
}
}
/**
* Exec Delete SQL statement
* @param {Object} sql
*/
function deleteMySQL(sql)
{
execFlag = mysql.deleteData(sql);
if(execFlag == 1)
return 1;
else
{
lasterr = mysql.getLastError();
return 0;
}
}
/**
* Exec Update SQL statement
* @param {Object} sql
*/
function updateMySQL(sql)
{
execFlag = mysql.updateData(sql);
if(execFlag == 1)
return 1;
else
{
lasterr = mysql.getLastError();
return 0;
}
}
/**
* Exec Call Proce
* @param {Object} proname == Proce Name
* @param {Object} inparas == Proce IN Parameters
* @param {Object} outparas == Proce OUT Parameters
* @param {Object} cnum == Number of fields in OUT Parameters
*/
function callProceMySQL(proname,inparas,outparas,cnum)
{
var rs = mysql.execProce(proname,inparas,outparas,cnum);
if(rs.length == 0)
{
lasterr = mysql.getLastError();
return null;
}
else
{
var array = new Array();
var DataSet = new Array();

var rowsplit = '';//行间隔 ,注意,这并不是普通的'-',而是0x06 转换而来的
var fieldsplit ='';//字段间隔,注意,这并不是普通的'|',而是0x05 转换而来的

array = rs.split(rowsplit);
var DataRow = new Array();
for(var i = 0;i < array.length; i++)
{
var fieldarray = array[i].split(fieldsplit);
DataSet[i] = fieldarray;
}
return DataSet;
}
}
/**
* Exec Transcation
* @param {Object} sql
*/
function execTranscationMySQL(sql)
{
execFlag = mysql.execTranscation(sql);
if(execFlag == 1)
return 1;
else
{
lasterr = mysql.getLastError();
return 0;
}
}
/**
* Get Last Error Message if exec error from js
*/
function getLastErrorMySQL()
{
return lasterr;
}
/**
* Get Last Error Message if exec error from ocx
*/
function getLastErrorFromMySQL()
{
var lasterrmysql = mysql.getLastError();
return lasterrmysql;
}

Ⅳ nodejs简单访问及操作mysql数据库的方法示例

本文实例讲述了nodejs简单访问及操作mysql数据库的方法。分享给大家供大家参考,具体如下:
var
mysql
=
require('mysql');
//调用MySQL模块
mysql模块要安装
$
npm
install
mysql
//创建一个connection
var
connection
=
mysql.createConnection({
host
:
'127.0.0.1',
//主机
user
:
'root',
//MySQL认证用户名
password
:
'',
//MySQL认证用户密码
port:
'3306',
//端口号
database:''
//数据库名
});
//创建一个connection
connection.connect(function(err){
if(err){
console.log('[query]
-
:'+err);
return;
}
console.log('[connection
connect]
succeed!');
});
//执行SQL语句
connection.query('SELECT
1
+
1
AS
solution',
function(err,
rows,
fields)
{
if
(err)
{
console.log('[query]
-
:'+err);
return;
}
console.log('The
solution
is:
',
rows[0].solution);
});
//关闭connection
connection.end(function(err){
if(err){
return;
}
console.log('[connection
end]
succeed!');
});
注:nodejs在操作数据库的时候不用设置数据库的编码格式
set
names
utf8
希望本文所述对大家nodejs程序设计有所帮助。
您可能感兴趣的文章:nodejs连接mysql数据库简单封装示例-mysql模块nodejs进阶(6)—连接MySQL数据库示例nodejs实现的连接MySQL数据库功能示例Nodejs连接mysql并实现增、删、改、查操作的方法详解nodeJs实现基于连接池连接mysql的方法示例nodejs中操作mysql数据库示例NodeJS链接MySql数据库的操作方法Nodejs使用mysql模块之获得更新和删除影响的行数的方法NodeJs使用Mysql模块实现事务处理实例nodejs连接mysql数据库及基本知识点详解

Ⅳ js怎样连接和调用mysql数据库

我知道 ie 怎么连接,别的浏览器不行。首先先去mysql官网下载个 odbc 然后安装,安装完再去控制面板找到“管理工具”--》“(ODBC)数据源”--》(如果是在自己电脑上测试就选
“用户DSN”,如果想被别人访问就选“系统DSN”) 然后添加mysqlodbc,然后把驱动的名字记下来(不是你起的名字,是后面自带的名字!),准备工作做完,我们就可以通过代码访问数据库了。(注:我第一次安装ODBC,用js调用时提示我未知数据源一类的话,卸载ODBC后再次安装ODBC就正常了) 用 ie 先调用odbc驱动 然后操作mysql,话不多说,上代码!

//创建数据库连接对象
var conn = new ActiveXObject("ADODB.Connection");
//创建数据集对象
var rs = new ActiveXObject("ADODB.Recordset");
try{
//MySQL ODBC 5.3 ANSI Driver 这个就是我刚才说让你记得驱动的名字
var connectionstring = "Driver={MySQL ODBC 5.3 ANSI Driver};Server=127.0.0.1;User=root;Password=root;Database=mysql;Option=3;Port=3306";
console.log(connectionstring);
//打开连接
conn.open(connectionstring);
//查询语句
var sql = " select * from table1 ";
//打开数据集(即执行查询语句)
rs.open(sql,conn);
//(或者rs=conn.execute(sql);)
//遍历所有记录
while(!rs.eof){
//WScript是Windows 的脚本宿主对象,详细情况请在windows帮助里查找。
//WScript.Echo输出记录的内容
document.write(rs.Fields("id") + "\t" + rs.Fields("name") + "\n");
//下一条记录
rs.moveNext();
}
//关闭记录集
rs.close();
//关闭数据库连接
conn.close();
} catch(e){
//异常报告
document.write(e.message);
} finally{
//
}

前端JS可以连接MYSQL数据库吗和php有什么不同

Node.JS 服务器可以在 后端 连接mysql,这时的情况和php是一样的。

我从未见过前端JS直接连接mysql的,原因是:

(1)浏览器内置的javascript 引擎一般只支持websocket,即基于http连接的套接字高层协议,而不是真正的socket,因此除非服务器端也开启websocket服务并拆开套接字转发到mysql,否则无法代理连接

(2)我见过的绝大多数mysql 服务器都工作在服务器环境下的一个虚拟子网,换句话说,直接的远程3306端口是拒绝连接的,这样可以隔绝端口直接攻击

如果前段js直接可以连接后端服务器mysql的端口,那么就不叫B/S结构了,而是C/S结构(比如传统的windows桌面程序),安全上有很多问题,所以大多数浏览器也不支持这个操作。

Ⅶ js如何连接和操作腾讯云mysql数据库

首先是登陆腾讯云,登陆之后可以领取新手礼包,如图

二、使用一个demo来说明如何操作云mysql数据库

    1.在实例上上新建一个为nodejs的数据库,然后新建一个为employee的表,新建四个字段 name sex age email除了年龄为int其它的全部为varchar格式
    2.新建一个TimLiu的文件夹,打开cmd,cd TimLiu, 初始化项目npm init ,按照它的提示一步一步的操作即可,安装mysql模块,npm insitall mysql, 这个模块的作用主要是连接mysql数据库。
    3.新建一个model.js 文件,

  • var mysql = require(‘mysql’);

  • var connection = mysql.createConnection({

  • host:'',

  • user:'root',

  • password:'123abc',

  • database:' nodejs',

  • port:6445

  • })

  • connection.connect();

  • 这里的host为我们在腾讯云上开通的外地址,端口号也是在外网地址里面,注意要把外网地址写分开,用户为默认的管理员用户,密码为我们在云平台上设置的密码,数据库为我们创建的nodejs数据库。
    接下来我们对数据库进行增删改查操作

  • /**

  • * 增加员工

  • */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);

  • })}

  • getEmployee();

  • /**

  • *删除员工

  • */ 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();

  • 这样我们就可以愉快的操作数据库了

    如果大家想把项目更模块化操作,可在model下面新建一个employee_two.js,代码如下

  • 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);})

Ⅷ nodejs怎么后台操作mysql

连接流程代码如下:

var mysql = require('mysql'); //调用MySQL模块//创建一个connectionvar connection = mysql.createConnection({

host : '127.0.0.1', //主机
user : 'root', //MySQL认证用户名
password:'12345',
port: '3306',
database: 'node'});//创建一个connectionconnection.connect(function(err){

if(err){

console.log('[query] - :'+err); return;

}

console.log('[connection connect] succeed!');

});

//执行SQL语句connection.query('SELECT 1 + 1 AS solution', function(err, rows, fields) {

if (err) {

console.log('[query] - :'+err); return;

}

console.log('The solution is: ', rows[0].solution);

});

//关闭connectionconnection.end(function(err){

if(err){

return;

}

console.log('[connection end] succeed!');

});

关于Connection Optionos

要想创建一个数据库连接,先就要认识清楚Options

host:主机地址 (默认:localhost)

user:用户名

password:密码

port:端口号 (默认:3306)

database:数据库名

charset:连接字符集(默认:’UTF8_GENERAL_CI’,注意字符集的字母都要大写)

localAddress:此IP用于TCP连接(可选)

socketPath:连接到unix域路径,当使用 host 和 port 时会被忽略

timezone:时区(默认:’local’)

connectTimeout:连接超时(默认:不限制;单位:毫秒)

stringifyObjects:是否序列化对象(默认:’false’ ;与安全相关https://github.com/felixge/node-mysql/issues/501)

typeCast:是否将列值转化为本地JavaScript类型值 (默认:true)

queryFormat:自定义query语句格式化方法https://github.com/felixge/node-mysql#custom-format

supportBigNumbers:数据库支持bigint或decimal类型列时,需要设此option为true (默认:false)

bigNumberStrings:supportBigNumbers和bigNumberStrings启用 强制bigint或decimal列以JavaScript字符串类型返回(默认:false)

dateStrings:强制timestamp,datetime,data类型以字符串类型返回,而不是JavaScript Date类型(默认:false)

debug:开启调试(默认:false)

multipleStatements:是否许一个query中有多个MySQL语句 (默认:false)

flags:用于修改连接标志,更多详情:https://github.com/felixge/node-mysql#connection-flags

ssl:使用ssl参数(与crypto.createCredenitals参数格式一至)或一个包含ssl配置文件名称的字符串,目前只捆绑Amazon RDS的配置文件

其它:

可以使用URL形式的加接字符串,不多介绍了,不太喜欢那种格式,觉得可读性差,也易出错,想了解的可以去主页上看。

MYSQL CURD操作

增加

var mysql = require('mysql');var DATABASE = "seckill";var TABLE="seckill"var connection = mysql.createConnection({
host:'127.0.0.1',
user:'root',
password:'12345',
port:'3306',
database: DATABASE
});

connection.connect();var addVip = 'insert into seckill(name,number) values(?,?)';var param = ['100元秒杀家教机',100];
connection.query(addVip, param, function(error, result){
if(error)
{
console.log(error.message);
}else{
console.log('insert id: '+result.insertId);
}
});

connection.end();

删除

var mysql = require('mysql');var DATABASE = "node";var TABLE="seckill"var connection = mysql.createConnection({
host:'127.0.0.1',
user:'root',
password:'12345',
port:'3306',
database: DATABASE
});

connection.connect();var addVip = 'delete from seckill where seckill_id = 1005';
connection.query(addVip, function(error, result){
if(error)
{
console.log(error.message);
}else{
console.log('affectedRows: '+result.affectedRows);
}
});

connection.end();

查找

var mysql = require("mysql");var DATABASE = "node";var TABLE="seckill"var connection = mysql.createConnection({
host:'127.0.0.1',
user:'root',
password:'12345',
port:'3306',
});

connection.connect();
connection.query('use '+DATABASE);
connection.query('select * from '+TABLE, function(error, results, fields){
if (error) { throw error;
} if (results) { for(var i = 0; i < results.length; i++)
{
console.log('%s %s',results[i].name,results[i].end_time);
}
}
});

connection.end();

修改

var mysql = require('mysql');var DATABASE = "seckill";var connection = mysql.createConnection({
host:'127.0.0.1',
user:'root',
password:'12345',
port:'3306',
database: DATABASE
});
connection.connect();var userSql = "update seckill set number = number-1 where seckill_id = ?";var param = [1000, 2];
connection.query(userSql, param, function (error, result) {
if(error)
{
console.log(error.message);
}else{
console.log('affectedRows: '+result.affectedRows);
}
});
connection.end();

结束连接其实有两种方法end(),destory();

  • end()
    end()方法在queries都结束后执行,end()方法接收一个回调函数,queries执行出错,仍然后结束连接,错误会返回给回调函数err参数,可以在回调函数中处理!

  • destory()
    比较暴力,没有回调函数,即刻执行,不管queries是否完成!

  • 使用连接池

    在数据库中执行如下代码创建一个存储过程

  • DROP PROCEDURE IF EXISTS `P_SeckillInfo`;DELIMITER ;;CREATE DEFINER=`root`@`localhost` PROCEDURE `P_SeckillInfo`(IN ExtName VARCHAR(120),IN ExtNumber INT(11),OUT ExtReturnVal INT)


  • TOP: BEGIN


  • DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN


  • ROLLBACK;


  • SET ExtReturnVal = 0; -- Failed


  • END;


  • START TRANSACTION;


  • INSERT INTO seckill(name, number) VALUES(ExtName,ExtNumber);


  • SET ExtReturnVal = 1;


  • SELECT ExtReturnVal;


  • COMMIT;END;;


  • DELIMITER ;262728293031323334

  • 调用示例:

  • var mysql = require("mysql");var pool = mysql.createPool({

  • host: '127.0.0.1',


  • user: 'root',


  • password:'12345',


  • port:'3306',


  • database:'node'});//监听connection事件pool.on('connection', function(connection) {


  • connection.query('select * from seckill', function(error, results, fields){

  • if (error) { throw error;

  • } if (results) { for(var i = 0; i < results.length; i++)

  • {

  • console.log('%s %s',results[i].name,results[i].end_time);

  • }

  • }

  • });


  • });//连接池可以直接使用,也可以共享一个连接或管理多个连接(引用官方示例)//直接使用pool.query('SELECT 1 + 1 AS solution', function(err, rows, fields) {


  • if (err) throw err;


  • console.log('The solution is: ', rows[0].solution);


  • });//共享连接function myQuery(sql){

  • pool.getConnection(function(err, connection) {


  • connection.query(sql, function(err, result) {


  • console.log(result); //释放连接

  • connection.release();


  • }); //Error: Connection already released,应该每次到连接池中再次获取

  • // connection.query( 'SELECT * FROM seckill;', function(err, result) {



  • // console.log(result);


  • // connection.release();


  • // });


  • });

  • }


  • myQuery('SELECT * FROM seckill;');

  • myQuery('SELECT * FROM seckill;');

  • 1.连接池的创建,使用createPool方法,options和createConntion一致;
    2.其它连接池配置选项

  • waitForConnections

  • 当连接池没有连接或超出最大限制时,设置为true且会把连接放入队列,设置为false会返回error

  • connectionLimit
    连接数限制,默认:10

  • queueLimit
    最大连接请求队列限制,设置为0表示不限制,默认:0

  • 断开重连

    示例代码:

  • var mysql = require('mysql');var db_config = {


  • host: '127.0.0.1',


  • user: 'root',


  • password:'12345',


  • port:'3306',


  • database:'node'};var connection;function handleDisconnect() {


  • connection = mysql.createConnection(db_config);


  • connection.connect(function(err) {


  • if(err) {


  • console.log('进行断线重连:' + new Date());


  • setTimeout(handleDisconnect, 2000); //2秒重连一次

  • return;


  • }


  • console.log('连接成功');


  • });


  • connection.on('error', function(err) {


  • console.log('db error', err); if(err.code === 'PROTOCOL_CONNECTION_LOST') {


  • handleDisconnect();


  • } else {

  • throw err;

  • }


  • });


  • }


  • handleDisconnect();

  • 首先关闭mysql服务,然后执行程序,会一直打印断线重连,当再次开启mysql服务后,打印连接成功。

Ⅸ 菜鸟教程中的nodejs连接mysql数据库教程存在sql注入问题吗

是否有漏洞与代码有关,与此无关

其中主流的连接MySQL的方式是用mysql或者mysql2包,它们只是提供了调用驱动的api。很多框架中包括egg,nest都是基于此封装的。

但这不是SQL注入的关键,它只是一种连接方式。它只管连接,不管其他的,存不存在SQL注入完全靠写代码的人本身啊。

一句脚本本没有问题(知道不让直接放sql的,也是放注入),但是你如果让SQL变成由用户输入拼接而成,那就存在SQL注入的风险。

你应该去了解SQL注入的原理,然后进行防患,网络就能找到,然后可以用ORM,一般都对输入做了处理,还能避免直接写SQL(但其实难的地方还得自己写)。

有不理解可以追问。