请问各位大师:oracle中dbf文件是什么文件?

请问各位大师:oracle中dbf文件是什么文件?,第1张

oracle中dbf文件数据库文件,指电脑上储存数据的文件。

dbf为一种特殊的文件格式,表示数据库文件,Foxbase,Dbase,Visual FoxPro等数据库处理系统所产生的数据库文件。

可以通过系统数据字典DBA_DATA_FILES查看.dbf数据文件。 对应于逻辑表空间(不是实际文件),一个表空间可以具有多个数据文件,但是一个数据文件只能属于一个表空间。

扩展资料:

Oracle的另外三种文件:

(1).log重做日志文件,用于将修改信息记录到数据库中(不会产生查询 *** 作)。 日志文件是备份和恢复的重要手段。

(2).ctl控制文件,用于描述数据库的物理结构,存储数据文件和日志文件等信息。

(3).ora参数文件,记录数据库名称,控制文件路径,进程等信息。

如果以上三个文件中的任何一个错误,则数据库可能无法正常运行。 参数文件可以修改数据库的某些参数,但是需要重新启动数据库才能生效。

使用JDBC-ODBC桥接方式读取Access文件,使用Acces

与DBF都需要配置桥接模式,在控制面板里,选择管理工具里配置

核心代码如下,

Java代码  

try {

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver")

con = DriverManager.getConnection("jdbc:odbc:ss",  bulidPath, "")//加载驱动,默认密码,空字符串即可

//System.out.println("Access连接:"+con)

} catch (Exception e) {

e.printStackTrace()

}

Java代码  

AccessBase ab=new AccessBase()

Connection con=ab.getConnection("zdbz.mdb")

String sql="select * from test"//查询表

PreparedStatement ps=con.prepareStatement(sql)

ResultSet rs=ps.executeQuery()

//ResultSetMetaData s=rs.getMetaData()

// int i=s.getColumnCount()

//System.out.println(i)

List<ExcelEntity> list=new ArrayList<ExcelEntity>()

while(rs.next()){

ExcelEntity xml=new ExcelEntity()

xml.setUi(rs.getString(1))

xml.setTi(rs.getString(2))

xml.setTa(rs.getString(3))

xml.setDp(rs.getString(4))

xml.setVi(rs.getString(5))

xml.setIp(rs.getString(6))

xml.setPg(rs.getString(7))

xml.setAb(rs.getString(8))

xml.setKw(rs.getString(9))

xml.setMh(rs.getString(10))

list.add(xml)

}

DAO.addAccess(list)

// System.out.println(i)

rs.close()

ps.close()

con.close()

4,最后在来说一下,比较纠结的DBF的解析,关于这个东西,散仙以前也没用过,现在客户有这种需求,自然得做好,于是乎Google了一把,效果似乎还不错,第一页上基本全是有关于,JAVA解析DBF格式的,当时我还在想,得来全不费工夫,于是,找了一篇,看起来似乎挺靠谱的解析博客,拷贝了其中的代码,拿过来使用,结果报了各种异常,这种方式是用流读取的,然后直接解析流,提取每一行数据,还附带一个jar包,散仙后面会把jar给传上来,我们先看下这种方式的代码:

Java代码  

package com.dbhelper

import java.io.FileInputStream

import java.io.InputStream

import com.hexiong.jdbf.DBFReader

public class ParseDBF {

public static void main(String[] args) {

readDBF("C:\\Users\\cuichao\\Desktop\\zdbz\\test.DBF")

}

public static void readDBF(String path)

{

InputStream fis = null

try

{

// 读取文件的输入流

fis = new FileInputStream(path)

// 根据输入流初始化一个DBFReader实例,用来读取DBF文件信息

DBFReader reader = new DBFReader(fis)

//DBFReader reader=new DBFReader("C:\\Users\\cuichao\\Desktop\\zdbz\\test.DBF")

// System.out.println(reader)

// 调用DBFReader对实例方法得到path文件中字段的个数

int fieldsCount = reader.getFieldCount()

System.out.println(fieldsCount)

Object[] s= reader.nextRecord()

while(reader.nextRecord()!=null&&reader.nextRecord().length>0){

for(int i=0i<reader.nextRecord().lengthi++){

System.out.println(reader.nextRecord()[i])

}

}

}

catch (Exception e)

{

e.printStackTrace()

}

finally

{

try {

//  fis.close()

} catch (Exception e) {

}

}

}

}

这种流读取的方式,散仙也看了下源码,代码比较繁琐,而且有好多限制不能用,比如说,读取某列的字符长度不能大于8,或者包含某个C或D的字符的不能用,等等。散仙,猜想这个发博客的人,是根据自己的业务定义的,这也不能怪人家,各个业务的需求都不一样,难免会出现这种情况。 下面,我们来看看,最王道,最通用的解析方法, 既然,它是数据库,那么我们为什么不按数据库的方式来搞呢? 用流读取的方式,不通用,而且异常百出,按数据库的方式,解决,才是最完美的方法。

首先配置好的桥接,截图如下

核心代码如下

Java代码  

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver")//加载驱动

try {

//conn = DriverManager.getConnection(DB_URL)

conn = DriverManager.getConnection("jdbc:odbc:ss","test.dbf","")//无密码则空字符串

pstm = conn.prepareStatement("select * from test") // 此处的XXB 为DBF数据文件的名字

rs = pstm.executeQuery()

至此,完美解决DBF数据库文件读取。网上的东西,太杂了,所以,我们要理智判断,取其精华,去其糟粕,为我所用。

终于被我找到了!

完全free的: com/ 这个网站主要是做数据库连接中间介的,其中用到了一个他们自己开发的叫做JDBF的项目,该项目就是专门控制dbf文件的,整个包只有30K大小,你们随便用个工具反编译一下就可以看懂里面的代码,很简单,就是按照具体格式处理文件!(注意,不是使用JDBC连接的。)

不过我试了一下,发现只支持三中格式的:foxpro2.x、DBase IV、DBase III。 

大家用得着的话可以去那里下载! 有问题的话可以再来问我。

我发现国外的这类开源网站很多,国内的就少得可怜了!唉!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/7988118.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-12
下一篇 2023-04-12

发表评论

登录后才能评论

评论列表(0条)

保存