w7705120 2015-09-18 02:25 采纳率: 0%
浏览 2190

SQLite 请问通过id查寻 一个数据项的值这里的显示输出如代码如何写?

第七步:“预览数据”按钮的代码:
void CSQLiteTestDlg::OnBnClickedLookButton()
{
BOOL fTest;
CDbSQLite sqlite;
fTest = sqlite.Open(_T("theTestSqlite.db"));
if (!fTest)
{
AfxMessageBox(_T("打不开theTestSqlite.db"));
return;
}
CSqlStatement *stmt = sqlite.Statement(_T("SELECT * FROM usersInfo"));
//当数据不为空的时候,填充LIST控件
if (stmt != NULL)
{
m_ListCtrl.DeleteAllItems(); //清除LIST项
while(m_ListCtrl.DeleteColumn(0));//清除LIST列项
CRect rect;
m_ListCtrl.GetWindowRect(&rect); //获得LIST控件大小
int nFields = stmt->Fields(); //取得数据库表的列数
int nWidth = (rect.Width() - rect.Width() * 0.02) / nFields; //平均分布列数
int nCol = 0;
int nRow = 0;
CString szText;
for(nCol = 0; nCol < nFields; nCol++)
{
szText = stmt->FieldName(nCol); //得到列名
m_ListCtrl.InsertColumn(nCol, szText, LVCFMT_LEFT, nWidth, nCol);
}
while (stmt->NextRow())
{
szText = stmt->ValueString(0); //得到列值
m_ListCtrl.InsertItem(nRow, szText);
for(nCol = 1; nCol < nFields; nCol++)
{
szText = stmt->ValueString(nCol); //得到列值
m_ListCtrl.SetItem(nRow, nCol, LVIF_TEXT, szText, 0, 0, 0, 0);
}
++nRow;
}
}
delete stmt;
UpdateData(FALSE);
}
请问通过id查寻 一个数据项的值如SELECT name FROM WHERE id='6';这里的显示输出如代码如何写?

  • 写回答

3条回答 默认 最新

  • oyljerry 2015-09-18 05:14
    关注
     /*********************************
          功能
            执行一条查询语句,返回结果集
          参数
            sqlStr:需要执行的SQL语句
            pDataTable:【out】返回的数据集
            errMsg:【out】返回的错误信息
          返回
    
        *********************************/
    int CMyDatabase::query(char *sqlStr, CDataTable *pDataTable, char **errMsg)
    {
        int result;
        char **dbResult; //是 char ** 类型,两个*号
        int nRow, nColumn;
        int i , j;
        int index;        
        result = sqlite3_get_table( m_pDb,  sqlStr, &dbResult, &nRow, &nColumn, errMsg);
    
            if (result == SQLITE_OK)
        {
            index = nColumn;
            //前面说过 dbResult 前面第一行数据是字段名称,从 nColumn 索引开始才是真正的数据   
            for( i = 0; i < nRow ; i++ )
            {
                CDataRow dr;
                for( j = 0 ; j < nColumn; j ++)
                {
                    //printf("字段名:%s  字段值:%s\n", dbResult[j], dbResult[index] );
    
                                    if (dbResult[index])
                                    {
                                        dr.addColumn(dbResult[j], dbResult[index]);
                                        index++;
                                    }
                }
                            if (pDataTable && dr.getColumns() > 0)
                    pDataTable->addRow(&dr);
            }
        }
    
        sqlite3_free_table( dbResult );
    
    
    
        return result;
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 C#调用python代码(python带有库)
  • ¥15 矩阵加法的规则是两个矩阵中对应位置的数的绝对值进行加和
  • ¥15 活动选择题。最多可以参加几个项目?
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)
  • ¥20 怎么在stm32门禁成品上增加查询记录功能
  • ¥15 Source insight编写代码后使用CCS5.2版本import之后,代码跳到注释行里面