1. 程式人生 > >VC連線SQLite3的方法(MFC封裝類)

VC連線SQLite3的方法(MFC封裝類)

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, 0000); 
            } 
            ++nRow; 
        } 
    } 
    delete stmt;
    UpdateData(FALSE);