Conn, hDlg, addr ConnectString, sizeof ConnectString, addr Conn, sizeof Conn,addr StrLen, SQL_DRIVER_COMPLETE.if ax==SQL_SUCCESS || ax==SQL_SUCCESS_WITH_INFOinvoke SwitchMenuState,TRUEinvoke MessageBox,hDlg, addr Conn,addr ConnectCaption,MB_OK+MB_ICONINFORMATION
当连接字符串完成,程序将调用SQLDriverConnect来通过MS Access ODBC 驱动程序连接test.mdb数据库.如果文件test.mdb不存在,ODBC driver将提示用户输入该文件的位置,因为我们已经设定了SQL_DRIVER_COMPLETE标志.当SQLDriverConnect成功返回时, Conn 被填入由ODBC驱动程序创建的完整连接字符串.我们通过一个message box来将其显示给用户. SwitchMenuState是一个单纯切换菜单选项可用的函数.
现在,到数据库的连接已经建立并被打开,并一直保持打开状态直到用户选择关闭.
当用户选择了"View All Records"命令, 对话框过程将调用RunQuery.函数
RunQuery proc hDlg:DWORDinvoke ShowWindow, hList, SW_SHOWinvoke SendMessage, hList, LVM_DELETEALLITEMS,0,0
由于listview control在创建时是不可见的,现在我们把它显示出来.还有 要把其中的所有元素(如果有的话)删掉.
invoke SQLAllocHandle, SQL_HANDLE_STMT, hConn, addr hStmt.if ax==SQL_SUCCESS || ax==SQL_SUCCESS_WITH_INFO
接下来,程序将获得一个语句句柄.
invoke SQLExecDirect, hStmt, addr SQLStatement, sizeof SQLStatement.if ax==SQL_SUCCESS || ax==SQL_SUCCESS_WITH_INFO
通过 SQLExecDirect执行已准备好的SQL语句.我这里选择SQLExecDirect 的原因是只须执行一次.
invoke FillData
执行SQL语句后,将返回一个结果集.我们使用 FillData函数来从结果集中解出数据并将其放入listview control中.
FillData procLOCAL lvi:LV_ITEMLOCAL row:DWORDinvoke SQLBindCol, hStmt,1,SQL_C_CHAR, addr TheName, sizeof TheName,addr NameLengthinvoke SQLBindCol, hStmt,2,SQL_C_CHAR, addr TheSurname, sizeof TheSurname,addr SurnameLengthinvoke SQLBindCol, hStmt,3,SQ上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] 下一页
|