菜单

使用mssql进行数据查询

下载

由于系统默认使用sqlite数据库,要使用mssql,要多写几行代码。且mssql版本不低于2012,要支持offset关键字

示例工程下载地址:https://gitee.com/clawclaw/sttmssql

1.拖放一个[数据查询]控件

1.1属性-查询语句

方法1:在系统数据库default.db中建一个与mssql相同的表结构,便于组态

方法2:任选一个表,直接写一个sql语句,如select 1 as c1, 2 as c2, 3 as c3 from S_CFG,在后续进行修改

本文以方法2为例

1.2属性-表格设计:必设项

2.其他控件如图

3.代码

3.1定义一个IDatabase * psqlserver = NULL;

3.2连接按钮事件

void Frm02::wMButton1_clk_cb(uint16_t code, LvEvent e) {
    /*wMButton1(连接)的点击事件*/
    string ip = wMText1->getText();
    string strport = wMText2->getText();
    int port = StringUtil::safeStoi(strport);
    string uid = wMText3->getText();
    string pwd = wMText4->getText();
    string dbname = wMText5->getText();
    string dbid = ip+strport+uid+pwd+dbname;
    IDatabase* ptmp = DBMgr::getdb(dbid, DBTYPE::MSSQL, ip, port, uid, pwd, dbname);
    cout<<dbid<<endl;
    if(ptmp) {
        psqlserver = ptmp;
        vm->setChar("varLast", "connect ok");
    } else {
        vm->setChar("varLast", "connect fail");
    }
}

3.3查询按钮事件

void Frm02::wMButton2_clk_cb(uint16_t code, LvEvent e) {
    /*wMButton2(查询)的点击事件*/
    //1.把这句复制下来,修改一下:重新设定字段及显示的标题:c1,c2,c3是查询结果的中字段名;“第1列,第2列,第3列”为表头
    wMSqliteTable1->setMainArg(0, 172, 1024, 427, "c1,第1列,98;c2,第2列,98;c3,第3列,97", 7, false, 6);
    //2.设定数据源连接
    tv_wMSqliteTable1->resetDB(psqlserver);
    //3.查询语句,这个sql的结果将作为refine的表
    string sql = wMText6->getText();
    string str = "(" + sql +") t1";
    //4.设置排序字段(如不设置为第1个字段)
    tv_wMSqliteTable1->m_key = "c1";
    //5.设置是否倒序
    tv_wMSqliteTable1->enDesc(true);
    //6.执行"select * from " + str
    tv_wMSqliteTable1->refine(str);
    //7.更新表格控件
    tv_wMSqliteTable1->drawData(true);
}

 

3.4执行按钮事件

void Frm02::wMButton3_clk_cb(uint16_t code, LvEvent e) {
    /*wMButton3(执行)的点击事件*/
    string sql = wMText7->getText();
    psqlserver->execute(sql);
}

4.屏上运行

4.1屏上需带2个库及1个配置文件(见示例工程)

4.2将odbcinst.ini移到/etc下

void Frm02::onLoad() {
#if __arm__
    string result;
    Util::exeSync("mv /customer/prm/odbcinst.ini /etc/", "r", result);
    Util::exeSync("sync", "r", result);
#endif
}

 5.运行界面

连接成功

查询

执行再查询

最近修改: 2025-06-20Powered by