使用代码创建数据库文件
2007-01-31 14:07
239 查看
最近参与制作了一个论证系统,需要基于代码创建MDB文件,稍微研究了一下,呵呵。
ADO没有对数据库文件操纵的功能,微软提供了ADOX来对ADO扩充,可以看一下微软官方的说明:ADOX 是核心 ADO 对象的扩展库。它显露的其他对象可用于创建、修改和删除模式对象,如表格和过程。它还包括安全对象,可用于维护用户和组,以及授予和撤消对象的权限。Microsoft® ActiveX® Data Objects Extensions for Data Definition Language and Security (ADOX)
好,下面进入正文,来看看怎
样使用ADOX来创建数据库文件
首先看一下ADOX的对象模型,这里只是简要介绍怎样创建数据库,不会对下面的每个对象都作介绍,有需要的话,可以看看微软的官方资料。
下面是创建数据库的ASP代码
dim databasename '定义数据库名称
dim databasepath '定义数据库存放路径
Set cre_new_db = Server.CreateObject("ADOX.Catalog")
call cre_new_db.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & databasepath & databasename)
set cre_new_db=nothing
首先创建一个ADOX.Catalog的对象 cre_new_db。Catalog是ADOX的一个对象,包含描述数据源模式目录的集合。然后再使用Catalog的一个方法来来创建该MDB文件。
然后使用ADOX.Catalog.Tables.Append可以创建表,胆汁这样创建的表不是很直观,而且发现没办法做到跟ACCESS很兼容,并且使用这个方法我不知道怎样创建自动编号类型,哪位大侠会的话欢迎指教我,所以创建表的过程我是使用SQL语句直接创建的,代码如下:
Str_Curconn="Driver={Microsoft Access Driver (*.mdb)};DBQ="& databasepath & databasename
Set cru_conn=Server.CreateObject("ADODB.Connection")
cru_conn.Open Str_Curconn
cmd="CREATE TABLE t1(id AUTOINCREMENT,name TEXT(50))"
cru_conn.Execute(cmd)
这样子就可以创建逐个创建表了。具体的可以参考Access的帮助,其中AUTOINCREAMENT类型应该不是SQL的标准类型,并且似乎发现Access好像不是很完全支持SQL标准,如下面介绍的设置默认值的方法就没办法只用SQL语句。
但是有时候我们需要把一个表从另外一个数据库导入我们新建的数据库里,那应该怎么办呢?用insert into就可以了。
Set s_conn=Server.CreateObject("ADODB.Connection")
s_conn.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ=D:/abc.mdb"
cmd="insert into t1(id,name) in"&" '"&databasepath & databasename&"'"&" select id,name from t2"
s_conn.Execute(cmd)
先需要创建一个ADO对象,然后使用
insert into t1(id,name) in d:/xyz.mdb select id,name from t2
这个SQL语句就可以了,t1是需要插入的数据库中的表名,t2就是s_conn榜定的那个数据库的表了,另外注意还有字段列表,呵呵。
这些都好了,但是有些字段还需要设默认值,我试了好几种方法,发现SQL语句无论是CREATE TABLE还是Alert都不行,似乎还是Access没办法执行,最后发现ADOX可以,来看看应该怎么弄
Set set_def_DB = Server.CreateObject("ADOX.Catalog")
Set set_def_Table = Server.CreateObject("ADOX.Table")
set_def_DB.ActiveConnection="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & databasepath & databasename
set set_def_Table = set_def_DB.Tables("t1")
set_def_Table.Columns("total").Properties("Jet OLEDB:Allow Zero Length") = True
set_def_Table.Columns("total").Properties("default") = 10
其面的那部分连接的就不介绍了,后面的t1是需要设置默认值字段所在的表,total是需要设的默认值的字段,
另外倒数第二行那个是需要允许0长度,不然会提示出错.
PS:终于写完了,本篇博客的第一篇文章,呵呵,比叫匆忙,明天还有考试的~~~,很多代码都是直接从我写的程序里考出来的,比较乱。呵呵^_^
ADO没有对数据库文件操纵的功能,微软提供了ADOX来对ADO扩充,可以看一下微软官方的说明:ADOX 是核心 ADO 对象的扩展库。它显露的其他对象可用于创建、修改和删除模式对象,如表格和过程。它还包括安全对象,可用于维护用户和组,以及授予和撤消对象的权限。Microsoft® ActiveX® Data Objects Extensions for Data Definition Language and Security (ADOX)
好,下面进入正文,来看看怎
样使用ADOX来创建数据库文件
首先看一下ADOX的对象模型,这里只是简要介绍怎样创建数据库,不会对下面的每个对象都作介绍,有需要的话,可以看看微软的官方资料。
下面是创建数据库的ASP代码
dim databasename '定义数据库名称
dim databasepath '定义数据库存放路径
Set cre_new_db = Server.CreateObject("ADOX.Catalog")
call cre_new_db.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & databasepath & databasename)
set cre_new_db=nothing
首先创建一个ADOX.Catalog的对象 cre_new_db。Catalog是ADOX的一个对象,包含描述数据源模式目录的集合。然后再使用Catalog的一个方法来来创建该MDB文件。
然后使用ADOX.Catalog.Tables.Append可以创建表,胆汁这样创建的表不是很直观,而且发现没办法做到跟ACCESS很兼容,并且使用这个方法我不知道怎样创建自动编号类型,哪位大侠会的话欢迎指教我,所以创建表的过程我是使用SQL语句直接创建的,代码如下:
Str_Curconn="Driver={Microsoft Access Driver (*.mdb)};DBQ="& databasepath & databasename
Set cru_conn=Server.CreateObject("ADODB.Connection")
cru_conn.Open Str_Curconn
cmd="CREATE TABLE t1(id AUTOINCREMENT,name TEXT(50))"
cru_conn.Execute(cmd)
这样子就可以创建逐个创建表了。具体的可以参考Access的帮助,其中AUTOINCREAMENT类型应该不是SQL的标准类型,并且似乎发现Access好像不是很完全支持SQL标准,如下面介绍的设置默认值的方法就没办法只用SQL语句。
但是有时候我们需要把一个表从另外一个数据库导入我们新建的数据库里,那应该怎么办呢?用insert into就可以了。
Set s_conn=Server.CreateObject("ADODB.Connection")
s_conn.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ=D:/abc.mdb"
cmd="insert into t1(id,name) in"&" '"&databasepath & databasename&"'"&" select id,name from t2"
s_conn.Execute(cmd)
先需要创建一个ADO对象,然后使用
insert into t1(id,name) in d:/xyz.mdb select id,name from t2
这个SQL语句就可以了,t1是需要插入的数据库中的表名,t2就是s_conn榜定的那个数据库的表了,另外注意还有字段列表,呵呵。
这些都好了,但是有些字段还需要设默认值,我试了好几种方法,发现SQL语句无论是CREATE TABLE还是Alert都不行,似乎还是Access没办法执行,最后发现ADOX可以,来看看应该怎么弄
Set set_def_DB = Server.CreateObject("ADOX.Catalog")
Set set_def_Table = Server.CreateObject("ADOX.Table")
set_def_DB.ActiveConnection="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & databasepath & databasename
set set_def_Table = set_def_DB.Tables("t1")
set_def_Table.Columns("total").Properties("Jet OLEDB:Allow Zero Length") = True
set_def_Table.Columns("total").Properties("default") = 10
其面的那部分连接的就不介绍了,后面的t1是需要设置默认值字段所在的表,total是需要设的默认值的字段,
另外倒数第二行那个是需要允许0长度,不然会提示出错.
PS:终于写完了,本篇博客的第一篇文章,呵呵,比叫匆忙,明天还有考试的~~~,很多代码都是直接从我写的程序里考出来的,比较乱。呵呵^_^
相关文章推荐
- 10分钟理解Android数据库的创建与使用(附具体解释和演示样例代码)
- 使用Apache POI创建Excel,并从数据库中读取数据写入到Excel文件中
- 使用C#创建Access2010或Access2007 accdb 数据库文件
- 创建Accress 数据库连接文件UDL/如何使用 ADO 的数据链接文件
- Java文件IO操作工具类(复制、删除、重命名、创建路径),复制代码并创建FileControl类即可使用。
- 使用IO技术,创建一个目录,然后复制一个文件到该目录!实现复制的功能。(在博客园上传的第一份代码)
- php 使用fopen函数创建、打开文件详解及实例代码
- 解决:Android使用自带sqlite开发时,apk中创建的数据库外部的进程是没有权限去读/写的,而且无法如何读取指定目录下的db文件
- iPhone开发之.plist文件的创建于使用—— 代码案例 ( 图片浏览器的创建)
- spring-01 spring的bean管理(使用配置文件方式创建对象 附代码)
- 通过创建用户profile文件, 限制用户对数据库资源使用
- .pch文件的创建和旧代码使用
- asp.net中使用Global.asax文件中添加应用出错代码,写入系统日志文件或数据库
- asp.net中使用Global.asax文件中添加应用出错代码,写入系统日志文件或数据库
- 使用Apache POI创建Excel,并从数据库中读取数据写入到Excel文件中
- asp.net中使用Global.asax文件中添加应用出错代码,写入系统日志文件或数据库
- 使用代码创建数据库
- 在access中如何创建数据库。你认为数据库在网站开发中所扮演的角色是什么。使用数据库和使用文件,两者的优缺点各是什么。
- Android 中使用预先创建的数据库文件
- 操作、压缩MDB文件;使用ADO读写Mysql数据库;建立数据库和表的VBS脚本代码(2013-08-26 11:39:34)