分享
 
 
 

如何建立SQL SERVER数据库

王朝知道·作者佚名  2010-02-01
窄屏简体版  字體: |||超大  
 
分類: 電腦/網絡 >> 程序設計 >> 其他編程語言
 
問題描述:

本人是菜鸟级别的。。。。。。。。

只是想学学。。。。。

參考答案:

这就是我曾经写的初始化数据库组件源代码。看看用得上没有。

Option Explicit

Private mdbPassword As String

Private mdbPath As String

Private Server As String

Private UserID As String

Private Password As String

Private DatabaseName As String

Public Property Let l_mdbPath(str_mdbPath As String)

mdbPath = str_mdbPath

End Property

Public Property Let l_mdbPassword(str_mdbPassword As String)

mdbPassword = str_mdbPassword

End Property

Public Property Let l_Server(str_Server As String)

Server = str_Server

End Property

Public Property Let l_LoginID(str_LoginID As String)

UserID = str_LoginID

End Property

Public Property Let l_Password(str_Password As String)

Password = str_Password

End Property

Public Property Let l_DatabaseName(str_DatabaseName As String)

DatabaseName = str_DatabaseName

End Property

'建立数据库

Public Function CreateDatabase() As Integer

Dim sql_connString As String

Dim conn As ADODB.Connection

Set conn = New ADODB.Connection

sql_connString = "IF EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = N'" & DatabaseName & "')"

sql_connString = sql_connString + " DROP DATABASE [" & DatabaseName & "]"

sql_connString = sql_connString + " CREATE DATABASE [" & DatabaseName & "]"

conn.ConnectionString = "driver={SQL Server};" & _

"server=" & Server & ";" & _

"uid=" & UserID & ";" & _

"pwd=" & Password & ";" & _

"database=master"

conn.Open

conn.BeginTrans

conn.Execute sql_connString

If conn.Errors.Count > 0 Then

conn.RollbackTrans

Else

conn.CommitTrans

CreateDatabase = 1

End If

conn.Close

Set conn = Nothing

End Function

'建立数据库登录用户

Public Function CreateLoginUser(LoginName As String, UserLoginPassword As String) As Integer

Dim tmp_Str As String

Dim conn_mdb As New ADODB.Connection

Dim conn_Sql As New ADODB.Connection

Dim rs_mdb As New ADODB.Recordset

'打开SQL SERVER数据库

conn_Sql.ConnectionString = "driver={SQL Server};" & _

"server=" & Server & ";" & _

"uid=" & UserID & ";" & _

"pwd=" & Password & ";" & _

"database=" & DatabaseName

conn_Sql.Open

'打开MDB数据库

conn_mdb.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & mdbPath & ";password=" & mdbPassword

rs_mdb.Open "CreateLoginUser", conn_mdb, adOpenDynamic

If Not (rs_mdb.EOF And rs_mdb.BOF) Then

rs_mdb.MoveFirst

conn_Sql.BeginTrans

While Not rs_mdb.EOF

tmp_Str = CStr(rs_mdb("CreateLoginUserSqlLine"))

If InStr(1, tmp_Str, "DefaultDatabase") > 0 Then

tmp_Str = Replace(tmp_Str, "DefaultDatabase", DatabaseName)

End If

If InStr(1, tmp_Str, "DefaultPassword") > 0 Then

tmp_Str = Replace(tmp_Str, "DefaultPassword", UserLoginPassword)

End If

If InStr(1, tmp_Str, "DefaultUser") > 0 Then

tmp_Str = Replace(tmp_Str, "DefaultUser", LoginName)

End If

conn_Sql.Execute tmp_Str

rs_mdb.MoveNext

Wend

If conn_Sql.Errors.Count > 0 Then

conn_Sql.RollbackTrans

CreateLoginUser = 0

rs_mdb.Close

Exit Function

Else

conn_Sql.CommitTrans

CreateLoginUser = 1

rs_mdb.Close

End If

Else

CreateLoginUser = 0

End If

conn_mdb.Close

conn_Sql.Close

Set conn_Sql = Nothing

Set conn_mdb = Nothing

End Function

'建立数据库相关结构内容

Public Function CreateTable() As Integer

Dim conn_mdb As New ADODB.Connection

Dim conn_Sql As New ADODB.Connection

Dim rs_mdb As New ADODB.Recordset

'打开SQL SERVER数据库

conn_Sql.ConnectionString = "driver={SQL Server};" & _

"server=" & Server & ";" & _

"uid=" & UserID & ";" & _

"pwd=" & Password & ";" & _

"database=" & DatabaseName

conn_Sql.Open

'打开MDB数据库

conn_mdb.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & mdbPath & ";password=" & mdbPassword

'第一步,从FirstDropContent表中取得SQL语句,删除库中已经存在的内容

rs_mdb.Open "FirstDropContent", conn_mdb, adOpenDynamic

If Not (rs_mdb.EOF And rs_mdb.BOF) Then

rs_mdb.MoveFirst

conn_Sql.BeginTrans

While Not rs_mdb.EOF

conn_Sql.Execute CStr(rs_mdb("DropContent"))

rs_mdb.MoveNext

Wend

If conn_Sql.Errors.Count > 0 Then

conn_Sql.RollbackTrans

CreateTable = 0

rs_mdb.Close

Exit Function

Else

conn_Sql.CommitTrans

rs_mdb.Close

End If

Else

CreateTable = 0

End If

'第二步,从CreateTable表中取得SQL语句,建立数据库的表

rs_mdb.Open "CreateTable", conn_mdb, adOpenDynamic

If Not (rs_mdb.EOF And rs_mdb.BOF) Then

rs_mdb.MoveFirst

conn_Sql.BeginTrans

While Not rs_mdb.EOF

conn_Sql.Execute CStr(rs_mdb("CreateTable"))

rs_mdb.MoveNext

Wend

If conn_Sql.Errors.Count > 0 Then

conn_Sql.RollbackTrans

CreateTable = 0

rs_mdb.Close

Exit Function

Else

conn_Sql.CommitTrans

rs_mdb.Close

End If

Else

CreateTable = 0

End If

'第三步,从AlertTable表中取得SQL语句,修改数据库的表

rs_mdb.Open "AlertTable", conn_mdb, adOpenDynamic

If Not (rs_mdb.EOF And rs_mdb.BOF) Then

rs_mdb.MoveFirst

conn_Sql.BeginTrans

While Not rs_mdb.EOF

conn_Sql.Execute CStr(rs_mdb("AlertTable"))

rs_mdb.MoveNext

Wend

If conn_Sql.Errors.Count > 0 Then

conn_Sql.RollbackTrans

CreateTable = 0

rs_mdb.Close

Exit Function

Else

conn_Sql.CommitTrans

rs_mdb.Close

End If

Else

CreateTable = 0

End If

'第四步,从CreateView表中取得SQL语句,建立数据库的视图

rs_mdb.Open "CreateView", conn_mdb, adOpenDynamic

If Not (rs_mdb.EOF And rs_mdb.BOF) Then

rs_mdb.MoveFirst

conn_Sql.BeginTrans

While Not rs_mdb.EOF

conn_Sql.Execute CStr(rs_mdb("CreateView"))

rs_mdb.MoveNext

Wend

If conn_Sql.Errors.Count > 0 Then

conn_Sql.RollbackTrans

CreateTable = 0

rs_mdb.Close

Exit Function

Else

conn_Sql.CommitTrans

rs_mdb.Close

End If

Else

CreateTable = 0

End If

'第五步,从CreateProcedure表中取得SQL语句,建立数据库的存储过程

rs_mdb.Open "CreateProcedure", conn_mdb, adOpenDynamic

If Not (rs_mdb.EOF And rs_mdb.BOF) Then

rs_mdb.MoveFirst

conn_Sql.BeginTrans

While Not rs_mdb.EOF

conn_Sql.Execute CStr(rs_mdb("CreateProcedure"))

rs_mdb.MoveNext

Wend

If conn_Sql.Errors.Count > 0 Then

conn_Sql.RollbackTrans

CreateTable = 0

rs_mdb.Close

Exit Function

Else

conn_Sql.CommitTrans

rs_mdb.Close

End If

Else

CreateTable = 0

End If

'第六步,从CreateTrigger表中取得SQL语句,建立数据库的触发过程

rs_mdb.Open "CreateTrigger", conn_mdb, adOpenDynamic

If Not (rs_mdb.EOF And rs_mdb.BOF) Then

rs_mdb.MoveFirst

conn_Sql.BeginTrans

While Not rs_mdb.EOF

conn_Sql.Execute CStr(rs_mdb("CreateTrigger"))

rs_mdb.MoveNext

Wend

If conn_Sql.Errors.Count > 0 Then

conn_Sql.RollbackTrans

CreateTable = 0

rs_mdb.Close

Exit Function

Else

conn_Sql.CommitTrans

rs_mdb.Close

End If

Else

CreateTable = 0

End If

CreateTable = 1

conn_mdb.Close

conn_Sql.Close

Set conn_mdb = Nothing

Set conn_Sql = Nothing

End Function

'删除数据库

Public Function DropDatabase() As Integer

Dim sql_connString As String

Dim conn As New ADODB.Connection

conn.ConnectionString = "driver={SQL Server};" & _

"server=" & Server & ";" & _

"uid=" & UserID & ";" & _

"pwd=" & Password & ";" & _

"database=master"

conn.Open

conn.BeginTrans

sql_connString = "IF EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = N'" & DatabaseName & "')"

sql_connString = sql_connString + " DROP DATABASE [" & DatabaseName & "]"

conn.Execute sql_connString

If conn.Errors.Count > 0 Then

conn.RollbackTrans

Else

conn.CommitTrans

DropDatabase = 1

End If

conn.Close

Set conn = Nothing

End Function

'填充默认数据表内容

Public Function FillTable()

Dim conn_mdb As New ADODB.Connection

Dim conn_Sql As New ADODB.Connection

Dim rs_mdb As New ADODB.Recordset

Dim rs_Sql As New ADODB.Recordset

'打开SQL SERVER数据库

conn_Sql.ConnectionString = "driver={SQL Server};" & _

"server=" & Server & ";" & _

"uid=" & UserID & ";" & _

"pwd=" & Password & ";" & _

"database=" & DatabaseName

conn_Sql.Open

'打开MDB数据库

conn_mdb.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & mdbPath & ";password=" & mdbPassword

'第一步,将MDB库GeneralCode表中的内容导入到SQL SERVEER中的GeneralCode表中。

rs_mdb.Open "GeneralCode", conn_mdb, adOpenDynamic

rs_Sql.Open "dbo.GeneralCode", conn_Sql, adOpenDynamic, adLockOptimistic

If Not rs_Sql.EOF Then

rs_Sql.MoveFirst

While Not rs_Sql.EOF

rs_Sql.Delete

rs_Sql.MoveNext

Wend

End If

If Not (rs_mdb.BOF And rs_mdb.EOF) Then

rs_mdb.MoveFirst

conn_Sql.BeginTrans

While Not rs_mdb.EOF

rs_Sql.AddNew

rs_Sql("Catalog") = rs_mdb("Catalog").Value

rs_Sql("Code") = rs_mdb("Code").Value

rs_Sql("Description") = rs_mdb("Description").Value

rs_Sql("FriendKeyID") = rs_mdb("FriendKeyID").Value

rs_Sql("ModifyBy") = rs_mdb("ModifyBy").Value

rs_Sql("ModifyDate") = rs_mdb("ModifyDate").Value

rs_Sql("UsedBy") = rs_mdb("UsedBy").Value

rs_Sql("TransferFlag") = rs_mdb("TransferFlag").Value

rs_Sql.Update

rs_mdb.MoveNext

Wend

If conn_Sql.Errors.Count > 0 Then

conn_Sql.RollbackTrans

FillTable = 0

rs_mdb.Close

rs_Sql.Close

Exit Function

Else

conn_Sql.CommitTrans

rs_mdb.Close

rs_Sql.Close

End If

Else

FillTable = 0

rs_mdb.Close

rs_Sql.Close

End If

'第二步,将MDB库Program表中的内容导入到SQL SERVEER中的Program表中。

rs_mdb.Open "Program", conn_mdb, adOpenDynamic

rs_Sql.Open "dbo.Program", conn_Sql, adOpenDynamic, adLockOptimistic

If Not rs_Sql.EOF Then

rs_Sql.MoveFirst

While Not rs_Sql.EOF

rs_Sql.Delete

rs_Sql.MoveNext

Wend

End If

If Not (rs_mdb.BOF And rs_mdb.EOF) Then

rs_mdb.MoveFirst

conn_Sql.BeginTrans

While Not rs_mdb.EOF

rs_Sql.AddNew

rs_Sql("ProgramID") = rs_mdb("ProgramID").Value

rs_Sql("ProgramName") = rs_mdb("ProgramName").Value

rs_Sql.Update

rs_mdb.MoveNext

Wend

If conn_Sql.Errors.Count > 0 Then

conn_Sql.RollbackTrans

FillTable = 0

rs_mdb.Close

rs_Sql.Close

Exit Function

Else

conn_Sql.CommitTrans

rs_mdb.Close

rs_Sql.Close

End If

Else

FillTable = 0

rs_mdb.Close

rs_Sql.Close

End If

'第三步,将MDB库UserAuthorization表中的内容导入到SQL SERVEER中的UserAuthorization表中。

rs_mdb.Open "UserAuthorization", conn_mdb, adOpenDynamic

rs_Sql.Open "dbo.UserAuthorization", conn_Sql, adOpenDynamic, adLockOptimistic

If Not rs_Sql.EOF Then

rs_Sql.MoveFirst

While Not rs_Sql.EOF

rs_Sql.Delete

rs_Sql.MoveNext

Wend

End If

If Not (rs_mdb.BOF And rs_mdb.EOF) Then

rs_mdb.MoveFirst

conn_Sql.BeginTrans

While Not rs_mdb.EOF

rs_Sql.AddNew

rs_Sql("UserID") = rs_mdb("UserID").Value

rs_Sql("UserName") = rs_mdb("UserName").Value

rs_Sql("PositionID") = rs_mdb("PositionID").Value

rs_Sql("GroupID") = rs_mdb("GroupID").Value

rs_Sql("Password") = rs_mdb("Password").Value

rs_Sql("Authoration") = rs_mdb("Authoration").Value

rs_Sql("ModifyBy") = rs_mdb("ModifyBy").Value

rs_Sql("ModifyDate") = Now

rs_Sql("TransferFlag") = rs_mdb("TransferFlag").Value

rs_Sql.Update

rs_mdb.MoveNext

Wend

If conn_Sql.Errors.Count > 0 Then

conn_Sql.RollbackTrans

FillTable = 0

rs_mdb.Close

rs_Sql.Close

Exit Function

Else

conn_Sql.CommitTrans

rs_mdb.Close

rs_Sql.Close

End If

Else

FillTable = 0

rs_mdb.Close

rs_Sql.Close

End If

'第四步,将MDB库QueryView表中的内容导入到SQL SERVEER中的QueryView表中。

rs_mdb.Open "QueryView", conn_mdb, adOpenDynamic

rs_Sql.Open "dbo.QueryView", conn_Sql, adOpenDynamic, adLockOptimistic

If Not rs_Sql.EOF Then

rs_Sql.MoveFirst

While Not rs_Sql.EOF

rs_Sql.Delete

rs_Sql.MoveNext

Wend

End If

If Not (rs_mdb.BOF And rs_mdb.EOF) Then

rs_mdb.MoveFirst

conn_Sql.BeginTrans

While Not rs_mdb.EOF

rs_Sql.AddNew

rs_Sql("ProgramCode") = rs_mdb("ProgramCode").Value

rs_Sql("ViewName") = rs_mdb("ViewName").Value

rs_Sql.Update

rs_mdb.MoveNext

Wend

If conn_Sql.Errors.Count > 0 Then

conn_Sql.RollbackTrans

FillTable = 0

rs_mdb.Close

rs_Sql.Close

Exit Function

Else

conn_Sql.CommitTrans

rs_mdb.Close

rs_Sql.Close

End If

Else

FillTable = 0

rs_mdb.Close

rs_Sql.Close

End If

FillTable = 1

conn_mdb.Close

conn_Sql.Close

Set conn_mdb = Nothing

Set conn_Sql = Nothing

End Function

小贴士:① 若网友所发内容与教科书相悖,请以教科书为准;② 若网友所发内容与科学常识、官方权威机构相悖,请以后者为准;③ 若网友所发内容不正确或者违背公序良俗,右下举报/纠错。
 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有