具体是这样的:
我先把所有有用的的SQL SERVER的数据库写成SQL语句,然后放在VB的SUB MAIN中。用一个同目录下的文本文件来检查是否是第一次打开程序。如果是第一次,就用ADO连上SQL SERVER然后进行建库和建表。如果不是跳过。
可是他再一个XP的机子上可以新建可在另一台机子上不能新建啊!高手请看代码:'这是查询函数
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'用Splite分割SQL中数据
sTokens = Split(SQL)'创建连接
Set cnn = New ADODB.ConnectionDim ConnectString As String
ConnectString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=StudentInfoCtrl"
cnn.Open ConnectString
If InStr("INSERT,DELETE,UPDATE", UCase$(sTokens(0))) Then
cnn.Execute SQL
MsgString = sTokens(0) & "Query successful!"
Else
Set rst = New ADODB.Recordset
'返回查询结果
rst.Open Trim$(SQL), cnn, adOpenKeyset, adLockOptimistic
'返回记录集对象
Set ExecuteSQL = rst
MsgString = "查询到" & rst.RecordCount & "条记录"
End IfExecuteSQL_Exit:
Set rst = Nothing
Set cnn = Nothing
Exit Function
ExecuteSQL_Error:
MsgString = "查询错误:" & Err.Description
Resume ExecuteSQL_Exit
End Function'这是我的建库语句等:
Sub Main()
Dim datainput As StringOpen App.Path & "\SETUP.INI" For Input As #1
Input #1, datainput
Close #1
If datainput = "1" Then
Dim mrc As ADODB.Recordset
Dim txtSQL As String
Dim msgText As String
txtSQL = "create database studentInfoCtrl"
Set mrc = ExecuteSQL(txtSQL, msgText)
txtSQL = "CREATE TABLE studentInfoCtrl.dbo.user_info(userID char(10) not null,userPWD char(16) not null,userDes char(10) not null)"
Set mrc = ExecuteSQL(txtSQL, msgText)
txtSQL = "create table studentInfoCtrl.dbo.student_info(studentID char(10) not null,studentName char(10) null,studentSex char(2) null,bornDate datetime null,classNO char(10) null,teleNumber char(14) null,ruDate datetime null,address varchar(50) null,comment varchar(200) null)"
Set mrc = ExecuteSQL(txtSQL, msgText)
txtSQL = "create table studentInfoCtrl.dbo.class_info(classNO char(10) not null,grade char(20) null,director char(10) null,classroomNO char(10) null)"
Set mrc = ExecuteSQL(txtSQL, msgText)
txtSQL = "create table studentInfoCtrl.dbo.course_info(courseNO char(10) not null,courseName char(10) null,courseType char(10) null,courseDes char(50) null)"
Set mrc = ExecuteSQL(txtSQL, msgText)
txtSQL = "create table studentInfoCtrl.dbo.gradecourse_info(grade char(10) null,courseName char(10) null)"
Set mrc = ExecuteSQL(txtSQL, msgText)
txtSQL = "create table studentInfoCtrl.dbo.result_info(examNO char(10) not null,studentID char(10) not null,studentName char(10) null,classNO char(10) null,courseName char(10) null,result float null)"
Set mrc = ExecuteSQL(txtSQL, msgText)
txtSQL = "insert into studentInfoCtrl.dbo.user_info values('sa','','')"
Set mrc = ExecuteSQL(txtSQL, msgText)
Open App.Path & "\SETUP.INI" For Output As #1
Write #1, "2"
Close #1
End IfDim fLogin As New frmLogin
fLogin.Show vbModal
If Not fLogin.OK Then
End
End If
Unload fLogin
Set fMainForm = New frmMain
fMainForm.Show
End Sub
我先把所有有用的的SQL SERVER的数据库写成SQL语句,然后放在VB的SUB MAIN中。用一个同目录下的文本文件来检查是否是第一次打开程序。如果是第一次,就用ADO连上SQL SERVER然后进行建库和建表。如果不是跳过。
可是他再一个XP的机子上可以新建可在另一台机子上不能新建啊!高手请看代码:'这是查询函数
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'用Splite分割SQL中数据
sTokens = Split(SQL)'创建连接
Set cnn = New ADODB.ConnectionDim ConnectString As String
ConnectString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=StudentInfoCtrl"
cnn.Open ConnectString
If InStr("INSERT,DELETE,UPDATE", UCase$(sTokens(0))) Then
cnn.Execute SQL
MsgString = sTokens(0) & "Query successful!"
Else
Set rst = New ADODB.Recordset
'返回查询结果
rst.Open Trim$(SQL), cnn, adOpenKeyset, adLockOptimistic
'返回记录集对象
Set ExecuteSQL = rst
MsgString = "查询到" & rst.RecordCount & "条记录"
End IfExecuteSQL_Exit:
Set rst = Nothing
Set cnn = Nothing
Exit Function
ExecuteSQL_Error:
MsgString = "查询错误:" & Err.Description
Resume ExecuteSQL_Exit
End Function'这是我的建库语句等:
Sub Main()
Dim datainput As StringOpen App.Path & "\SETUP.INI" For Input As #1
Input #1, datainput
Close #1
If datainput = "1" Then
Dim mrc As ADODB.Recordset
Dim txtSQL As String
Dim msgText As String
txtSQL = "create database studentInfoCtrl"
Set mrc = ExecuteSQL(txtSQL, msgText)
txtSQL = "CREATE TABLE studentInfoCtrl.dbo.user_info(userID char(10) not null,userPWD char(16) not null,userDes char(10) not null)"
Set mrc = ExecuteSQL(txtSQL, msgText)
txtSQL = "create table studentInfoCtrl.dbo.student_info(studentID char(10) not null,studentName char(10) null,studentSex char(2) null,bornDate datetime null,classNO char(10) null,teleNumber char(14) null,ruDate datetime null,address varchar(50) null,comment varchar(200) null)"
Set mrc = ExecuteSQL(txtSQL, msgText)
txtSQL = "create table studentInfoCtrl.dbo.class_info(classNO char(10) not null,grade char(20) null,director char(10) null,classroomNO char(10) null)"
Set mrc = ExecuteSQL(txtSQL, msgText)
txtSQL = "create table studentInfoCtrl.dbo.course_info(courseNO char(10) not null,courseName char(10) null,courseType char(10) null,courseDes char(50) null)"
Set mrc = ExecuteSQL(txtSQL, msgText)
txtSQL = "create table studentInfoCtrl.dbo.gradecourse_info(grade char(10) null,courseName char(10) null)"
Set mrc = ExecuteSQL(txtSQL, msgText)
txtSQL = "create table studentInfoCtrl.dbo.result_info(examNO char(10) not null,studentID char(10) not null,studentName char(10) null,classNO char(10) null,courseName char(10) null,result float null)"
Set mrc = ExecuteSQL(txtSQL, msgText)
txtSQL = "insert into studentInfoCtrl.dbo.user_info values('sa','','')"
Set mrc = ExecuteSQL(txtSQL, msgText)
Open App.Path & "\SETUP.INI" For Output As #1
Write #1, "2"
Close #1
End IfDim fLogin As New frmLogin
fLogin.Show vbModal
If Not fLogin.OK Then
End
End If
Unload fLogin
Set fMainForm = New frmMain
fMainForm.Show
End Sub
解决方案 »
- 恨死VB7,期待VB8!!!
- 求助!!!ADOC????
- VB6.0在哪有下载的啊~~请各位帮帮忙~~
- 怎么样在combo的 style是2时,给他的text属性来赋值?
- 有关报表的问题 帮帮忙 谢谢!!!!!!!!!!!!
- 半价转让几本VB书籍,有意者联系QQ:7443036
- 高手快进!!!一个DataReport报表的异步操作问题(一个在发布应用程序时容易忽视的bug)
- 求助:小弟想用VB做一个日期条,请各位大大帮忙看下,谢谢!
- 谁能给我一个控制扬声器发生的控件或代码,查帖子看到以前有一位袁飞兄给过,不知今天是否在?
- 如何将自己编的浏览器在注册表中注册为默认浏览器?
- 关于text和combo的组合
- 如何控制listview在某条记录不动,即用户不能移动记录
示例:
Sub s_ExecuteSqlFile(ByVal sFileName$, ByVal iDb As Object)
Dim iFn As Object
Dim iSql$, iStr$
Set iFn = wjFileSys.OpenTextFile(sFileName$, 1)
With iFn
While .AtEndOfStream = False
iStr = iFn.ReadLine
If UCase(iStr) = "GO" Then
If iSql <> "" Then
iDb.Execute iSql
iSql = ""
End If
Else
iSql = iSql & vbCrLf & iStr
End If
Wend
If iStr <> "" Then iDb.Execute iSql
iFn.Close
End With
End Sub