学号设置为主健,然后添加用事务处理,执行sql语句添加 Public Function Exsql(ParamArray sql()) As Boolean On Error Resume Next'事务执行1个sql语句 Dim cnConn As ADODB.Connection Set cnConn = New ADODB.Connection Dim mysql On Error GoTo err1 cnConn.Open CN'cn是连接字符串 cnConn.BeginTrans '开始一个事务
For Each mysql In sql cnConn.Execute mysql Next cnConn.CommitTrans '提交一个事物
Set cnConn = Nothing Exsql = True Exit Function err1: cnConn.RollbackTrans '回滚一个事物 Exsql = False End Function
返回true为成功,faluse不成功,可以同时输入多条
1 数据库的锁,锁的都是更新,不锁读取。所以多个客户可以读取同一个最后记录,只要他们还没有更新。建议添加一张表,LastNumber,只有一条记录。客户端读取到 LastNumber 表的最后学号后,用加一得到的新学号更新 LastNumber 表。如果更新成功,此号有效。否则重新读取。2 学生表建立一个多字段(把能够识别统一学生的字段都包含进去)唯一索引,不允许重复记录(会引起一个错误)。当然你需要 On Error 拦截错误,不使程序退出。
Public Function Exsql(ParamArray sql()) As Boolean
On Error Resume Next'事务执行1个sql语句
Dim cnConn As ADODB.Connection
Set cnConn = New ADODB.Connection
Dim mysql
On Error GoTo err1 cnConn.Open CN'cn是连接字符串
cnConn.BeginTrans '开始一个事务
For Each mysql In sql
cnConn.Execute mysql
Next
cnConn.CommitTrans '提交一个事物
Set cnConn = Nothing
Exsql = True
Exit Function
err1:
cnConn.RollbackTrans '回滚一个事物
Exsql = False
End Function