利用SQL Server 和MFC实现对数据库的简单管理
工具:SQL Server,VC6.0
步骤如下:
1.建立一个数据库studentinfo,再建立一个表testtable,表设计和初始值如下(仅仅是举个例子,后面操作都是基于此表的):
2.建立ODBC数据源
步骤如下:
1.进入计算机管理工具中的ODBC数据源
2.选择添加用户DSN
选择SQL Server Driver驱动,前提是已安装SQL Server Managemant Studio等相关组件工具
然后填写数据源名称和服务器(localhost表示本机服务器)
然后一直点击下一步直到完成,此时可以看到用户DSN中已经有了刚刚添加的数据源
3.现在打开VC6.0,新建一个对话框工程(命名为ODBC)
在默认对话框中添加控件如下:
注意:列表视图控件设置属性为报表类型Report,如下:
各控件绑定变量如下:
在CODBCDlg类的OnInitDialog()中添加如下代码
m_listctrl.SetExtendedStyle(LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT);
//设置列表视图控件为网格状风格,且为全选状态(鼠标点击某一行表现为全选状态)
m_listctrl.InsertColumn(0,"ID",LVCFMT_LEFT,110);//参数分别为字段索引,字段名,对齐方式,像素(每个字段宽度)
m_listctrl.InsertColumn(1,"姓名",LVCFMT_LEFT,100);
m_listctrl.InsertColumn(2,"性别",LVCFMT_LEFT,120);
m_listctrl.InsertColumn(3,"总分",LVCFMT_LEFT,100);
CString SQL="SELECT * FROM testtable"; //可以通过更改表名达到列出同一数据源中不同表的目的
ListStuInfo(SQL); //列出指定表中所有信息
SetTimer(1,1,NULL);//计时器
return TRUE;
然后在新建ODBC记录集类CInfoSet,其基类为CRecordSet
建立方式为点击菜单中的插入,选择新建类
按照如上图设置后点击OK,弹出对话框如下:
ODBC下拉选择刚才的数据源名称DSN为stuinfo,点击OK,然后会弹出一个选择数据表的对话框,选择testtable即可
此时在类视图中可以看见数据库的testtable表中的列名对应的成员变量m_id,m_score,m_name,m_sex
然后添加CODBCDlg 类的成员函数ListStuInfo(CString strSQL),用于在初始化对话框时在列表控件中显示学生信息
注意要在ODBCDlg.cpp文件中添加InfoSet.h头文件
void CODBCDlg::ListStuInfo(CString strSQL)
{
m_listctrl.DeleteAllItems(); //首先删除所有项目
CInfoSet Infoset; //创建一个记录集对象
if(!Infoset.Open(CRecordset::dynaset,strSQL,CRecordset::readOnly))//连接数据源并执行给定的SQL语句
{
MessageBox("连接数据源失败!","警告",MB_ICONASTERISK|MB_OK);
return;
}
CString strTemp;
int i = 0;
while(!Infoset.IsEOF())
{
m_listctrl.InsertItem(i,Infoset.m_id);
m_listctrl.SetItemText(i,1,Infoset.m_name);
m_listctrl.SetItemText(i,2,Infoset.m_sex);
strTemp.Format("%d",Infoset.m_score); //将long int转为CString
m_listctrl.SetItemText(i,3,strTemp);
Infoset.MoveNext();
i++;
}
Infoset.Close(); //关闭记录集
UpdateData(FALSE); //将控件变量值传给对应控件显示
}
至此编译运行会出现错误,原因是没有在stdafx.h头文件添加afxdb.h头文件,因为使用了记录集类
然后再编译运行即可,效果如下:
此时"添加","删除","修改"按钮没有反应,因为还没有为他们添加消息函数
下面开始构建添加,删除,修改模块
添加一个"添加学生信息"对话框资源,如下:
控件绑定变量如下:
双击该对话框的确定按钮为其添加消息函数代码(CStuInfoDlg 即为添加学生信息对话框对应的类)
void CStuInfoDlg::OnOK()
{
// TODO: Add extra validation here
UpdateData(TRUE);//将控件值传给控件变量
MessageBox("添加成功!","提示");
CDialog::OnOK();
}
在主对话框(CODBCDlg)添加成员变量如下:
双击主对话框添加按钮为其添加消息响应函数如下:
添加后列表视图如下:
接着完成修改模块
任然要新建对话框“修改学生信息"
其他操作跟添加差不多
添加相关代码:
运行效果如下:(注意:点击修改按钮前先选择列表控件中的要修改项)
修改后:
最后是删除模块,不需要建立对话框,只需在CODBCDlg添加如下成员函数:
删除后:
为了在主对话框实时获得当前表中记录数,还要添加计时器函数OnTimer(),利用MFC ClassWizard建立该函数,鼠标右键选择MFC ClassWizard
MFC+ODBC+SQL Server+Visual C++
原文:https://www.cnblogs.com/lyj-blogs/p/9846567.html