规划
俗话说"不谋万世者,不足谋一时;不谋全局者,不足谋一域"。不能长远地考虑问题的人,眼前的问题他也看不到;不能全面地把握局势的人,在细节上他也处理不好。所以在具体的实现之前,我们必须要将“全局”做好,也就是对系统的把控。知道系统是什么?、做什么?、大概怎么做?。
首先对系统的大体框架进行划分:
可以看出分为:数据库和vb6中编程2部分,所以我把大体的工作分为3大步
1.数据库设计
2.数据库与vb交互(配置ODBC数据源)
3.vb6中具体编程
实现
数据库:数据库的实现主要是两部分语句创建数据库和创建表
创建数据库:
CREATE DATABASE Student_Info;
创建表:
CREATE TABLE `students`
(
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`class_id` bigint(20) NOT NULL,
`name` varchar(100) NOT NULL,
`gender` varchar(1) NOT NULL,
`score` int(11) NOT NULL,
PRIMARY KEY (`id`)
)
ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8
vb6下具体编程:信息管理系统嘛,肯定以增删改查为主体思路,也就是在vb环境下对数据的操作。
对数据库数据的操作,那必然是需要建立在连接好数据库的情况下,再进行增删改查
1.连接(由于多个窗体需要多次访问,所以我将部分重复性很高的代码写到了公共模块方便复用)
a.连接文件DSN,分为本地和异地
Public Function ConnectString() As String
'本机发布
'ConnectString = "FileDSN=Student.dsn;UID=sa;PWD=1"
'异地发布
ConnectString = "Provider=sqloledb;server=192.168.138.1;UID=sa;PWD=1;database=Student"
End Function
b.抽象出的查询语句
Public Function ExecuteSQL(ByVal SQL As String, MsgString As String) As ADODB.Recordset
Dim cnn As ADODB.Connection '定义链接
Dim rst As ADODB.Recordset
Dim sTokens() As String '定义字符串
On Error GoTo ExecuteSQL_Error
sTokens = Split(SQL) '产生包含子串数组
Set cnn = New ADODB.Connection '创建连接
cnn.Open ConnectString '打开连接
'判断字符串中是否含有指定内容
If InStr("INSERT,DELETE,UPDATE", UCase$(sTokens(0))) Then
cnn.Execute SQL '执行查询语句
MsgString = sTokens(0) & " query successsful" '返回查询信息
Else
Set rst = New ADODB.Recordset '创建数据集对象
'返回查询结果
rst.Open Trim$(SQL), cnn, adOpenKeyset, adLockOptimistic
Set ExecuteSQL = rst
MsgString = "查询到" & rst.RecordCount & "条记录"
End If
ExecuteSQL_Exit:
Set rst = Nothing '清空数据集对象
Set cnn = Nothing '中断连接
Exit Function
'错误类型判断
ExecuteSQL_Error:
MsgString = "查询错误" & Err.Description
Resume ExecuteSQL_Exit
'在Visual Basic中,为了避免程序代码出错而终止程序
'一般在无法确定出错原因的情况下采用
'On Error Resume Next
'表示出错时自动跳转至下一行代码
End Function
2.各功能模块中的增删改查
将数据库中内容添加到窗体上
txtSQL = "select * from class_info"
Set mrc = ExecuteSQL(txtSQL, MsgText)
'添加内容到列表框中
For i = 1 To mrc.RecordCount
comboClassNo.AddItem mrc.Fields(0)
comboClassNo.ListIndex = 0
mrc.MoveNext
Next i
mrc.Close '关闭数据集对象
窗体中内容写入到数据库内
mrc.AddNew '给每个字段赋值
mrc.Fields(0) = Trim(txtSID.Text)
mrc.Fields(1) = Trim(txtName.Text)
...
mrc.Update '更新数据库
mrc.Close '关闭数据集对象
组合查询语句
If dd(2) = True
If dd(0) Or dd(1) Then
'组合查询语句
txtSQL = txtSQL & "and class_NO ='" & txtClassno.Text & "'"
Else
txtSQL = txtSQL & "class_NO ='" & txtClassno.Text & "'"
End If
End If