搜索
aardio官方社区 门户 查看主题

MySQL,MariaDB数据库操作

发布者: Jacen.He | 发布时间: 2013-7-14 18:23| 查看数: 26663| 评论数: 13|帖子模式


MariaDB实际上是MySQL的兼容分支, 下面的代码都可以支持。
mysql.client使用MariaDB提供的客户端组件(已内嵌在支持库中)

  1. import console;
  2. import mysql.client;

  3. console.log("正在连接数据库服务器...");
  4. thread.invoke( function()
  5.         while(! thread.get("db4free.net:end")){
  6.          io.stdout.write(">");sleep(100);
  7.     }  
  8. )

  9. var dbMysql,err = mysql.client(
  10.     server = "db4free.net"; //数据库服务器,可省略默认为localhost
  11.     uid = "aardio";//用户名,可省略默认为root
  12.     pwd = "aardio.com";  
  13. );

  14. thread.set("db4free.net:end",true)
  15. console.clearScreen ();
  16. if(!dbMysql){
  17.     console.log("连接数据库失败",err);
  18.     console.pause();
  19.     return;
  20. }

  21. //选择数据库
  22. dbMysql.selectDb("aardio")  

  23. //执行SQL语句,注意mysql表名、字段名可包含于反引号内(用键盘左上角ESC下方的按键内)
  24. dbMysql.exec("CREATE TABLE IF NOT EXISTS `library` (
  25.     `name` varchar(100) NOT NULL, `auditing` tinyint(1) DEFAULT '0',`bytes` BLOB,PRIMARY KEY (`name`),UNIQUE KEY `name` (`name`)
  26. ) ENGINE=MyISAM DEFAULT CHARSET=utf8;");

  27. var dbTable,err  = dbMysql.listTables()
  28. for tbl in dbTable.each(){
  29.     console.log("发现数据表:",tbl);
  30. }

  31. //执行SQL语句,使用命名参数
  32. console.log(
  33.     dbMysql.exec("INSERT `library` VALUES('测试',@num,@str)",{
  34.         num = 123;
  35.         str = "测试:'这是字符串!'命名参数可以自动处理字符串转义";
  36.     } )
  37. )

  38. //查询数据并返回记录集
  39. var result = dbMysql.query("SELECT * FROM `library`");
  40. for name,auditing,bytes in result.each(){
  41.     console.log( name,auditing,bytes ); //逐行输出所有记录
  42. }

  43. //移除数据库
  44. dbMysql.exec("DROP TABLE IF EXISTS `library`");
  45. console.pause();
复制代码
mysql.client 连接数据库的参数参考了sqlServer连接参数的用法,
用sever参数指定数据库服务器、用uid指定数据库用户名、pwd指定用户密码,而可选的参数database可用于指定数据库

exec() 用于执行无返回值的SQL语句,而query()函数用于支持有返回结果的数据(也可以支持无返回结果的SQL),
这几个函数都支持简单的参数化查询,如果参数不是一个表则调用string.format()简单的格式化sql语句,如果参数是一个表则作为命名参数重新生成SQL语句( MySQL本身并不支持命名参数,通过重新构造SQL语句实现 )。

注意MySQL用重音号`包含表名(重音号也就是键盘左上角波浪号下面的符号, 英文 backquote,有些人叫反勾号、反引号、倒引号、后引号等等比较乱) , mysql与sqlite一样都支持比较好用的limit语句、replace into语句(MSSQL都不支持 ), sqlite也可以使用重音号`包含表名。参考帖子 MSSQL,MySQL 语法区别

最新评论

onething 发表于 2013-7-14 18:59:37

学习中,先抢个板凳

学习中,先抢个板凳
Hades 发表于 2013-7-14 19:19:27

支持一下,学习了!

支持一下,学习了!
nvt303 发表于 2013-7-15 14:35:21

学习!

学习!
ihelpsoft 发表于 2013-7-16 08:17:51

与时俱进的速度真快,MariaDB都引入了。

与时俱进的速度真快,MariaDB都引入了。
uk8u8 发表于 2013-7-21 23:21:06

我滴个神!太帅了!!学习。。。

我滴个神!太帅了!!学习。。。
vbvfp 发表于 2013-7-27 15:50:54

MDB、MSSQL、SQLite才上手练习过,又出Mysql真是太给力了!支持aardio!

MDB、MSSQL、SQLite才上手练习过,又出Mysql真是太给力了!支持aardio!
小豹子 发表于 2013-8-2 02:39:01

给力,学习中{:3_62:}

给力,学习中
cokar 发表于 2013-8-17 13:01:13

小型数据库,用sqlite比较方便

小型数据库,用sqlite比较方便
air_fans 发表于 2013-8-29 17:06:13

好久没来了,又多了好多要学习的东西。支持老大!

好久没来了,又多了好多要学习的东西。支持老大!
hxsky 发表于 2014-8-19 09:12:03

非常好的内容,学习了。

非常好的内容,学习了。
lovellshn 发表于 2016-5-1 13:27:07

学习一下

学习一下
bdmin_II 发表于 2016-10-23 16:14:36
怎么向表中增加数据?
wind 发表于 2017-6-2 16:51:42
好,学习学习!

手机版|未经许可严禁引用或转载本站文章|站长邮箱|aardio.com|aardio官方社区 ( 皖ICP备09012014号 )

GMT+8, 2017-11-23 21:01 , Processed in 0.062500 second(s), 21 queries , WinCache On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表