如果用vb来建立数据库的话,用adox对象就可以了,主要用到下面几个对象:
Dim cat As New ADOXCatalog '对应数据库数据库文件
Dim tb() As New ADOXTable '数据库里的表
Dim cl As New ADOXColumn '数据库里的字段
不过这种方法比较麻烦,简单的办法是用文本文件来存储(如果你不想让别人知道你用文本文件存储的数据,你可以文本文件的后缀名你可以改成dat,tpl,log)。给你附带一个比较完整的文本文件读写的代码:
'以下是读记事本代码,读取后的数据存储在数组hs()中:
Dim i As Long, hs() As String
i = 0
ReDim hs(0)
Open AppPath & "\1txt" For Input As #1
Do While Not EOF(1)
ReDim Preserve hs(i)
Line Input #1, hs(i)
i = i + 1
Loop
Close #1
'以下是写记事本代码:
dim filename as string
filename = "这是第一行" & chr(13) & chr(10) & "这是第二行" & chr(13) & chr(10) & "这是第三行" & chr(13) & chr(10)
Open AppPath & "\2txt" For Output As #1
Seek #1, 1
Print #1, filename
Close #1
追问: 只有那个办法? 回答: 是,这跟SQL Server不同,ACCESS是独立文件的,而且它能支持的SQL语句有限,一般是使用ACCESS来创建,若要动态创建,只能用ADO了,但Sql Server就不同了,它可以执行复杂的SQL语句,相对来说,动态创建数据库和表,要比ACCESS方便。 追问: 创建表的话能用SQL语句了吗? 回答: 没试过,应该不行 追问: 那你能告诉我下怎么创建表吗?创建数据库我会了 回答: 可以使用DAO对象来 *** 作,注意是DAO对象,不是ADO对象! 追问: 能不能详细说下过程呢?创建表的过程 回答: 创建表的过程用DAOnet和ADOnet都可以,创建数据库可以用DAO对象,既然你已经可以创建数据库,那么创建表只要先连接到这个数据库,然后用create table语句来执行就行了,可以使用OledbConnection先连接这个库,接着用OledbCommand对象的ExecuteNonQuery来执行create table语句即可。
是否可以解决您的问题?
创建SQL Server 2000数据库
Dim ADOcn As New ADODBConnection
Dim Sqls As String
'连接到master数据库,创建新数据库
ADOcnConnectionString = "driver={SQL Server};server=;uid=sa;pwd=;database=master"
ADOcnOpen
'DISK INIT NAME='我的数据库',是数据库名称,显示在企业管理器中的名称
'PHYSNAME='d:\我的数据库_Datamdf',是数据库文件名
'SIZE=5120,数据库初始大小
Sqls = "DISK INIT NAME='我的数据库',PHYSNAME='d:\我的数据库_Datamdf',SIZE=5120" '在硬盘上建立数据库文件
ADOcnExecute Sqls
Sqls = "CREATE DATABASE 我的数据库 on 我的数据库=5120" '创建数据库
ADOcnExecute Sqls
ADOcnClose
大致有以下几步:读取文件 -- 格式化数据 -- 关闭文件 -- 使用数据如果数据量较大,需要进行筛选,且存放数据的源文件可能不定时变更,那么我们可以用一个临时文件来存放有用的数据,这样可大大提高程序的效率要 [格式化数据]时,我们首先要进行筛选,然后还得进行分类,这样文件中的字符串才能被转换成有用的信息来供程序使用这样一来,不用说,处理速度将大大减慢,而且就算你设计的数据格式比较科学,当数据量非常大时,文件的容量也会变的让普通计算机无法承受 相对文本文件来说数据库的使用也大致分为以下几步:打开数据库 -- 查找数据 -- 使用数据 -- 关闭数据库从中可以看出,里面少了一步格式化数据,因为数据库本身在存储数据时,它就是按照一定的格式来进行存储的 其次是,数据库与文本文件返回数据的方法不同如果把文本文件比作一个Textbox 的话,那么数据库更像是一个ListBox使用文本文件时我们需要从整个Textbox中取出有用的信息,并进行处理,而Listbox则可以根据需要返回特定的某一项由于VB本身并不带有可以访问数据库的类,所以我们需要引用一个包含能访问数据库的类来使用数据库这里我们采用ADODB,相比DAO和能访问数据库的API来说,它比DAO更灵活,更强大;而比起API,它更简单易用,更适合初学者而Access数据库比起SQL,也相对简单了很多,且能够满足中小型应用程序的需要,所以我们在使用数据库时,选择了Access就像使用文本文件来存储数据一样,我们需要先设计好数据结构,只不过在设计Access数据库的结构时,我们需要用到其它的程序来进行详细的规划建议采用的程序是office中的Access或VB自带的VISDATA当数据库设计好了以后,我们可以开始"数据库编程"了首先,我们需要引用ADO具体的方法是,在"工程" -- "引用" 中,找到"Microsoft ActiveX Data Object Library",这里的""是指的时ADO的版本号,一般来说,应用程序或ActiveX控件都具有向下兼容性,所以我们尽可能选择比较新的版本以确保程序在能识别旧版本Access的同时,也能识别较新版本的Access然后我们需要在程序中创建一个对象就好比我们在窗体上添加一个FileBox才能看到文件名一样,只有创建了ADO对象,我们才能够访问数据库常用的对象有两个,Connection和Recordset创建这两个对象的具体方法是:1在引用后,使用New关键字,如 Private Conn As New ADODBConnection Private Reco As New ADODBRecordset2在没引用时,用CreateObject创建对象: Dim Conn,Reco Set Conn = CreateObject("ADODBConnection") Set Reco = CreateObject("ADODBRecordset")创建了对象之后,下一步我们要做的就是打开数据库了先看下面的代码,可以成功的打开数据库 Connopen "Provider=MicrosoftJetOLEDB40;Data Source=D:\Mainmdb" 这句代码打开了D盘中的Mainmdb这个数据库 ConnectionOpen方法的第一个参数是连接代码,它将传递给系统的数据库引擎前半部分"Provider= MicrosoftJetOLEDB40",它表示了数据库的类型不同的数据库可能会不同后半句"Source=d:\mainmdb"它表示了数据库所在的绝对路径打开数据库之后,还要打开表假如数据库中有一个表,表名为"Users",字段有两个,一个为用户名,一个为密码那么看以下代码1想返回"Users"中,[用户名]为"去年烟花"的[密码] Recordsetopen "Select 密码 From Users Where 用户名='去年烟花'",Connection,1,1 之后我们就可以把用户输入的密码进行比较,看是否允许登录 If Recordseteof and Recordsetbof then Msgbox "用户不存在!",16 Else If PassWord =Recordset("密码")value then msgbox "登录成功!",64 Else msgbox "密码错误!",32 End If End If RecordsetClose2假设Admin已经成功登录系统,我们想把所有的用户名和密码都显示出来 Recordsetopen "Select From Users",Connection,1,1 这时,表已经被打开,我们就用以下代码把它显示出来 Do whlie Not Recordseteof Print "用户名: " & Recordset("用户名")value & "密码: " & Recordset("密码")value RecordsetMoveNext Loop RecordsetClose由以上代码示例可以看出,打开表时,可以只打开其中的一个字段,也可以打开所有第一个参数是SQL语句Select [字段名] From 表名 [Where 条件]这里的条件可以省略且字段名也可以用""来代替所有字段需要注意的是,如果你用(1)中的方法打开,那么(2)后面显示的代码就不能再用在(1)中因为(1)里并没有打开[用户名]字段,所以这一句Recordset("密码")就没有值存在,还有可能出错后面的条件,可以用"="、">"、"<"等运算符比如 "Where ID > 32"(这里假设[ID]为数字型) 这是打开的部分第二个很重要的部分就是查询记录数据库它并不是把所有记录全部放到一个变量中备用的而是以"当前记录"的形式来返回一个值所以我们想从中找到有用的信息,就必须要对信息进行定位/筛选定位: 移动到下一条 RecordsetMoveNext 移动到上一条 RecordsetMovePrevious 移动到最后一条 RecordsetMoveLast 移动到第一条 RecordsetMoveFrist 移动到某一条 RecordsetMove Number筛选: RecordsetFind "条件"如:[用方法(2)打开表之后] Private Sub Command1_Click() RecordsetFind "用户名=" & "text1text" If RecordsetEof <> True Then Msgbox "该用户的密码是:" & Recordset("密码")value,64 Else Msgbox "未找到该用户的资料!",16 End If End SubMoveNext 只有当Eof不为True时,才可用,否则发生错误而MovePrevious刚是Bof不为True时 而只要Eof 和 Bof中有一个不为真时,也就是说只要有一条记录时,它就可以使用 Find 方法中的条件和Open时的第一个参数中的条件表述方法是完全一致的当在已打开的记录集中,找不到该记录时,Eof为True找到则当前的值就是符合条件的记录 第三个部分就是添加/修改记录 修改记录很简单,先按以上的方法找到相关记录之后,给记录赋值就可以了 比如:[(修改密码)按方法(1)打开表之后] Recordset("密码")value = "123456" RecordsetUpdata 需要注意的就是,在修改完成后,要调用Updata方法,这样修改才能生效而添加记录则可以用以下代码来实现: Recordsetaddnew Recordset("用户名")value = "Admin" Recordset("密码")value = "Admin" RecordsetUpdata这里,先要调用Addnew方法,增加一条新记录,然后对这个新记录中的各字段赋值,最后再调用Updata方法到这里就差不多了,最后说一下上面提到的几个方法RecordsetOpen SQL语句,数据源,游标类型,打开方法SQL语句不用说了,就是Select那啥的,目的就是按要求从表中返回数据 数据源就是一个打开之后的Connection对象 去他妈的游标类型,填1就可以了 [偷笑ing] 打开方法对应了几个常数,具体哪几个可以从对象浏览器里看 对应数值的意义: 1 只读 2 独占 3 可写 4 自已可写,别人可读Connectionopen 连接代码,服务器用户名,密码 这里的连接代码就不在多说了,服务器用户名,密码只有在连接远程数据库时才用到
引用DAO类型库
1、从“工程”菜单中选择“引用”菜单项;
2、在可引用列表框中选择“Microsoft DAO 351 Object Library”项。
3、最后“确定”即可
设置DAO数据类型变量
DAO数据类型变量共分成两种:
1、Database变量
对应于Access数据库,通常在模块中被定义为Public全程变量:
Public AccessDBF As Database
'定义数据库对象实例AccessDBF
2、RecordSet变量
对应于Access数据库中的一个表,可定义为全程变量或局部变量,亦可作为函数参数进行传递:
Dim thePrintTable As RecordSet
'定义一个表对象实例thePrintTable
打开DAO数据类型
1、打开Access的方法
通常可设置一个专门的Public函数用来打开一个Access数据库,并且该函数在启动窗体的Private Sub Form_load ( )过程中被调用,函数定义格式如下:
Public Sub OpenDatabase ( )
Dim sConeect As String
SConnect = ";PWD = 8830428; UID = admin "
'设置打开时的用户名、口令等参数
Set AccessDBF = Nothing
'确认关闭对象实例
Set AccessDBF = WorksPaces (0 )OpenDatabase (AppPath&&"/ToXlsMDB",False,sConnect)
'打开当前路径的ToXlsMDB数据库
End Sub
2、打开RecordSet的方法
RecordSet遵循即用即开的原则,所以它通常在函数中打开
Set thePrintTable = AcessDBFOpenRecordSet ( "Table_1",dbOpenSnapshot )
相关的数据 *** 作
数据实际需要对Access表中的记录、字段、数据项进行 *** 作。下列双重循环把数据输出到Excel对应的单元格中:
For j = 0 To 2
For I = 0 To 3
ThePrintTableMoveNext
ExcelSheetRange ( Trim ( chr ( 71+j10+I ) )+"G")Value = thePrintTableFields (0)
Next I
Next j
关闭数据库
1、关闭Database
它通常在整个应用程序的最后进行 *** 作,即通常出现在Private Sub Form_unload (Cannel As Interger )过程中。命令格式实例如下:
AccessDBFClose
2、关闭RecordSet
它遵循用完即关的原则,所以通常出现在函数中。当完成了相关的数据 *** 作后就关闭它,下次再用时再打开即可:
thePrintTableClose
For i = 2 To 6
tblColumnsAppend "MyField" & i, adInteger '表的第i个字段
Next i
可以使用循环语句创建表
以上就是关于用vb制作db数据库文件全部的内容,包括:用vb制作db数据库文件、vb.net sql数据库创建表、求创建SQL(2000)数据库的VB代码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)