MySQL,MariaDB数据库操作

admin2020-12-17  369

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

 
import console;
import mysql.client;

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

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

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

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

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

var dbTable,err  = dbMysql.listTables() 
for tbl in dbTable.each(){
    console.log("发现数据表:",tbl);
}
 
//执行SQL语句,使用命名参数
console.log( 
    dbMysql.exec("INSERT `library` VALUES('测试',@num,@str)",{
        num = 123;
        str = "测试:'这是字符串!'命名参数可以自动处理字符串转义";
    } ) 
)

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

//移除数据库
dbMysql.exec("DROP TABLE IF EXISTS `library`");
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也可以使用重音号`包含表名。

转载请注明原文地址: https://seopai.com/read-96.html

最新回复(0)