VC連線SQLite3的方法(MFC封裝類)
阿新 • • 發佈:2019-02-12
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);
}
{
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
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
{
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);
}