数据库
Silk没有内置访问数据库的函数,可以通过调用C/C++开发的
Dll扩展实现,Silk安装包里自带2个Dll(SilkSQLite64.dll,SilkMySQL64.dll)分别用来访问Sqlite数据库和MySql数据库。
CSqlite类
Silk安装包里有个封装了调用SilkSQLite64.dll的类CSqlite,方便用户调用Sqlite数据库。
#include "../include/sqlite.si"
func sqliteTest()
{
//if SilkSQLite64.dll is not in current directory, you need to pass the path of dll here
//db=CSqlite(sqliteDllPath);
db=CSqlite();
if(db.Open(db.get_curdir()+"admin.db"))
{
sql=sprintf("select * from user ");
res=db.Query(sql);
if(res)
{
nCount=db.RecordNum(res)+1;//the first record is field names
nField=db.FieldNum(res);
for(i=0;i<nCount;i++)
{
str="";
for(j=0;j<nField;j++)
{
value=db.GetByFieldNo(res,i,j);
str+=value+", ";
}
print(str);
}
db.Query_Free(res);
}
db.Close();
}
}
CMySql类
Silk安装包里有个封装了调用SilkMySQL64.dll的类CMySql,方便用户调用MySql数据库。
#include "../include/mysql.si"
func mysqlTest()
{
//if SilkMySQL64.dll is not in current directory, you need to pass the path of dll here
//db=CMySql(mysqlDllPath);
db=CMySql();
//replace with your MySQL server ip/userid/pwd/db here
if(db.Connect("127.0.0.1","root","myroot","test_db"))
{
//sql=sprintf("select * from person_like where name = 'wang'");
sql=sprintf("select * from person_like");
res=db.Query(sql);
if(res)
{
nCount=db.RecordNum(res);
nField=db.FieldNum(res);
for(i=0;i<nCount;i++)
{
str="";
for(j=0;j<nField;j++)
{
value=db.GetByFieldNo(res,i,j);
str+=value+", ";
}
print(str);
}
db.Query_Free(res);
}
db.Close();
}
}
具体请参考Silk安装包里的例子。