《VC++ 60基于窗口的模糊查询的例子.doc》由会员分享,可在线阅读,更多相关《VC++ 60基于窗口的模糊查询的例子.doc(16页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 基于窗口的MFC工程模糊查询例子一、 首先建立一个基于窗口的MFC AppWizard(exe)的工程。步骤如下: 在菜单栏中点击file-new弹出窗口,选择Projects选项卡-选择MFC AppWizard(exe),之后再Project name输入自己的工程名称,在Location中选择工程的存放位置 .点击OK按钮,出现如下窗口 选择Dialog based,如下1.4. 之后点击Finish,。1.5点击OK,即可完成基于窗口的MFC工程的创建二、创建数据库、连接数据库的方法我使用的是ADO连接,具体步骤如下: 注:数据库自行建立,只要有一个表即可,本例中数据库名为LLJYd
2、atabase,sa密码为空 2.1 首先在文件视图(FileView)中,选择Header Files ,在右侧的代码中添加#import C:program filescommon filessystemadomsado15.dll rename_namespace(ADOBS) rename(EOF,adoEOF)using namespace ADOBS; 添加如下图所示 在类视图(ClassView)中,展开CTestApp-双击CTestApp构造方法,在右侧声明全局的数据库访问变量,BOOL Flag = FALSE; /登录标识_ConnectionPtr m_pCon; /A
3、DO连接对象_RecordsetPtr m_pRs; _RecordsetPtr m_pRs1;_CommandPtr m_pCom;CString user,password;/记录当前用户CString strserver; CString strdbName;CString strUser;CString strPassword在CTestApp类添加IniAdo()方法类视图(ClassView)CTestApp类中添加IniAdo()方法,如下 点击出现对话框,点击确定,在InitAdo()方法中添加下列代码:tryCString temp;char filepathMAX_PATH
4、;GetModuleFileName(NULL,filepath,MAX_PATH);temp = theApp.ExtractFilePath(filepath);/获取可执行文件的路径/m_pCon.CreateInstance(ADODB.Connection);CString strAdoConn;char temp1100;GetPrivateProfileString(DatabaseConfig,Server,temp1,100,temp+login.ini);strserver = (TCHAR *)temp1;GetPrivateProfileString(DatabaseC
5、onfig,Database,temp1,100,temp+login.ini);strdbName = temp1;GetPrivateProfileString(DatabaseConfig,User,temp1,100,temp+login.ini);strUser = temp1;GetPrivateProfileString(DatabaseConfig,PWD,temp1,100,temp+login.ini);strPassword = temp1;strAdoConn.Format(driver=SQL Server;SERVER=%s;UID=%s;PWD=%s;DATABA
6、SE=%s, strserver, strUser, strPassword, strdbName);m_pCon.CreateInstance(_uuidof(Connection);m_pCon-ConnectionString = (_bstr_t)strAdoConn;m_pCon-Open(,NULL);m_pCom.CreateInstance(ADODB.Command);m_pRs.CreateInstance(_uuidof(Recordset);m_pRs1.CreateInstance(_uuidof(Recordset);/ADOFLAG = TRUE;catch(_c
7、om_error)/ADOFLAG = FALSE;Flag = FALSE;MessageBox(0,请检查系统配置信息, 数据库连接失败,MB_OK);return;catch(.)AfxMessageBox(SYS Error);return ;在CTestApp类创建ExtractFilePath(LPTSTR filename)方法类视图(ClassView)CTestApp类中添加ExtractFilePath(LPTSTR filename)方法,如下 点击Add Member Function,弹出 点击确定,之后再该方法中添加如下代码:CString appname;appn
8、ame = AfxGetAppName();appname = appname+.exe;CString temp;int pos;temp = filename;pos = temp.Find(appname,0);temp = temp.Left(pos);return temp;如下图所示 在在CTestApp类InitInstance方法中,添加AfxOleInit(); IniAdo();语句,如下图2.6 建立一个login.ini文件,放到工程的Debug目录,生成发行版本时,放到release目录,内容为 DatabaseConfigServer=.Database=LLJYD
9、atabase 数据库的名称 我的为LLJYDatabase User=saPWD= 有密码的将密码写在这里三、界面设计 在资源视图中,双击IDD_TEST_DIALOG,之后再右侧的窗口中,设计界面 , 点击OK,在代码中注释掉CDialog:OnOK();,用/ CDialog:OnOK()即可,这样可以防止按回车键,系统调用默认的关闭窗口的方法,如下 按CTRL+Tab组合键,返回设计界面 3.6 删除确定及取消按钮,重新设计,添加一个静态文本框、一个编辑框、一个按钮、一个listcontrol显示控件,如下 为控件关联变量,在窗口的空白区域右键单击 单击ClassWIzard,弹出 3
10、.9 Member Variables选项卡下,选中相应控件,点击Add Variables按钮关联变量,关联后的如下 点击OK,即完成控件与变量的关联。 设置ListControl控件的显示风格, .1 在CTeatDialog类中的OnInitDialog方法中添加以下代码: CDialog:OnInitDialog();m_list1.ModifyStyle(0,LVS_SHOWSELALWAYS);m_list1.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_FLATSB); m_list1.InsertCo
11、lumn(0,产品名称,LVCFMT_LEFT,100); m_list1.InsertColumn(1,生产日期,LVCFMT_LEFT,100); 如下图所示3.11.2 运行效果如下:按钮查询事件 .1双击 模糊查询按钮,弹出 .2 点击OK .3 在OnMoHuquery()事件中添加如下代码CString c_value;m_value.GetWindowText(c_value);if(c_value=) MessageBox(请输入查询的产品名称.,提示,MB_OK|MB_ICONINFORMATION);return;else CString sql;m_list.Delete
12、AllItems(); sql.Format(select productname,stockdate from tb_product where productname like %s% ,c_value); m_pRs = m_pCon-Execute(_bstr_t)sql,NULL,adCmdText);int row = 0;while (! m_pRs-adoEOF)CString temp;m_list.InsertItem(10000,);for (int i = 0;iGetFields()-Count;i+)temp = (TCHAR *)(_bstr_t)m_pRs-GetFields()-GetItem(long)i)-Value;m_list.SetItemText(row,i,temp);m_pRs-MoveNext();row +=1; 加入代码如下.4 extern _ConnectionPtr m_pCon; /ADO连接对象extern _RecordsetPtr m_pRs; extern _CommandPtr m_pCom;添加入下图:.5 运行后,输入计算,点击模糊查询按钮,效果如下图: