java如何从数据库读取数据并写入txt文件?

java如何从数据库读取数据并写入txt文件?,第1张

写Java程序时经常碰到要读如txt或写入txt文件的情况,但是由于要定义好多变量,经常记不住,每次都要查,特此整理一下,简单易用,方便好懂!

[java] view plain copy

package edu.thu.keyword.test  

  

import java.io.File  

import java.io.InputStreamReader  

import java.io.BufferedReader  

import java.io.BufferedWriter  

import java.io.FileInputStream  

import java.io.FileWriter  

  

public class cin_txt {  

    static void main(String args[]) {  

        try { // 防止文件建立或读取失败,用catch捕捉错误并打印,也可以throw  

  

            /* 读入TXT文件 */  

            String pathname = "D:\\twitter\\13_9_6\\dataset\\en\\input.txt" // 绝对路径或相对路径都可以,这里是绝对路径,写入文件时演示相对路径  

            File filename = new File(pathname) // 要读取以上路径的input。txt文件  

            InputStreamReader reader = new InputStreamReader(  

                    new FileInputStream(filename)) // 建立一个输入流对象reader  

            BufferedReader br = new BufferedReader(reader) // 建立一个对象,它把文件内容转成计算机能读懂的语言  

            String line = ""  

            line = br.readLine()  

            while (line != null) {  

                line = br.readLine() // 一次读入一行数据  

            }  

  

            /* 写入Txt文件 */  

            File writename = new File(".\\result\\en\\output.txt") // 相对路径,如果没有则要建立一个新的output。txt文件  

            writename.createNewFile() // 创建新文件  

            BufferedWriter out = new BufferedWriter(new FileWriter(writename))  

            out.write("我会写入文件啦\r\n") // \r\n即为换行  

            out.flush() // 把缓存区内容压入文件  

            out.close() // 最后记得关闭文件  

  

        } catch (Exception e) {  

            e.printStackTrace()  

        }  

    }  

}

//定义驱动名

String url =

"jdbc:oracle:thin:@**.**.**.**:1521:&&"//定义数据库的链接语句,**表示你要链接的数据库的ip地址。当然如果你的本机上有oracle也可以写成127.0.0.1或者localhost,"&&"表示你的数据库名称。Stringusername ="scott"

//你登陆数据库的用户名

String password ="*******"

//你登陆数据库的密码Stringsql= "insert into users(username,password)

values(?,?)"

//插入数据的命令语句try{

Class.forName(driver)Connectionconn = DriverManager. getConnection_r(url,

username,password)

PreparedStatement

pstmt = conn.prepareStatement(sql)

pstmt.setString(1,

"god")

//当然为了方便我这是随便插入的数据

pstmt.setString(2,

"god")//同上

pstmt.executeUpdate()

pstmt.close()

conn.close()

//完成后关闭链接

} catch (ClassNotFoundException e) {

e.printStackTrace()

} catch (SQLExceptione) {

e.printStackTrace()}}}程序运行完成后你就会在你的数据库里看到多了一条记录username:god

password:god,另外我们觉得这篇博文的读者应该是那些对oracle数据库有一定的了解的程序开发爱好者源码天空

,如果你还不了解oracle,那你就需要对数据库有一定的了解这后再来看这篇博文。

对于一个热衷于程序设计的人来说,我们认为最主要的是你的程序一定要有一定的标准,我们认为这个例子是链接数据库最标准的方法。当然仁者见仁嘛

1、从数据库中显示所需要的图片

首先,添加一个Data数据控件,设置它的DatabaseName和RecordSource属性,

strPath = App.Path

If Right(strPath, 1) <>"\" Then

strPath = strPath &"\"

MyData.DatabaseName = strPath &"ExampleDB.mdb" '数据库存地址

MyData.RecordSource = "Info" '表名

第二步,添加Image控件用来显示图片,设置它的DataSource和DataField属性。例如本例中: Image1.DataSource="MyData"和Image1.DataField=" MyPhoto" 。然后设置其它具有数据绑定功能的控件用来显示所要的其它内容,经过这两步的 *** 作,运行程序就可以显示你要的数据了。

2、向数据库中添加需要存储的图片

首先,利用数据控件所具有的AddNew属性,添加一个按钮,双击后添加如下代码MyData.Recordset.AddNew

第二步,为Image控件图片指定图片路径Image1.Picture = LoadPicture("图片路径"),经过这两步的 *** 作,就可以向数据库中添加图片了。

这种方法最简单快捷,要写的代码量很少。但是这种方法在运行速度和灵活性方面有一定的限制,适合于初学者和一些简单的应用,要想灵活多变的显示图像,下面介绍的方法或许更适应您的要求。

利用编写代码实现图片的存储与显示

这种方法相对于方法一来说,代码量大,但是它 *** 作灵活,能够满足多样形式下的 *** 作,受到更多编程者的青睐。但是涉及到的知识面相对要多一些,不仅要掌握数据库的 *** 作方法,还要二进制文件的读写作进一步的了解。关于数据库及二进制文件的基本 *** 作很多参考书上都介绍的比较详细,需要时请查阅即可。在编程之前把本部分用到的变量说明如下:

Dim RS As New ADODB.Recordset

Dim Chunk() As Byte

Const ChunkSize As Integer = 2384

Dim DataFile As Integer, Chunks, Fragment As Integer

Dim MediaTemp As String

Dim lngOffset, lngTotalSize As Long

Dim i As Integer

1、从数据库中显示所需要的图片

第一步首先打开数据库,看有没有要查找的内容,有则继续执行,没有就退出

RS.Source = "select * from Info Where Name='" &sparaName &"'"

RS.ActiveConnection = "UID=PWD=DSN=TestDB"

RS.Open

If RS.EOF Then RS.cCose : Exit Sub

第二步,读出长二进制数据即图片数据,把它转换成图片文件, *** 作过程如下

MediaTemp = strPath &"picturetemp.tmp"

DataFile = 1

Open MediaTemp For Binary Access Write As DataFile

lngTotalSize = RS!MyPhoto.ActualSize

Chunks = lngTotalSize \ ChunkSize

Fragment = lngTotalSize Mod ChunkSize

ReDim Chunk(Fragment)

Chunk() = RS!MyPhoto.GetChunk(Fragment)

Put DataFile, , Chunk()

For i = 1 To Chunks

ReDim Chunk(ChunkSize)

Chunk() = RS!MyPhoto.GetChunk(ChunkSize)

Put DataFile, , Chunk()

Next i

Close DataFile

第三步,关闭数据库,这样就可以显示所要的图片了。

RS.Close

If MediaTemp = "" Then Exit Sub

Picture1.Picture = LoadPicture(MediaTemp)

If Picture1.Picture = 0 Then Exit Subj

2、向数据库中添加需要存储的图片

向数据库添加存储的图片是显示图片逆过程,只要掌握了显示图片的 *** 作,存储图片的 *** 作也就迎刃而解了,下面将 *** 作步骤介绍如下

第一步首先打开数据库,过程如下:

RS.Source = "select * from Info "

RS.CursorType = adOpenKeyset

RS.LockType = adLockOptimistic

RS.ActiveConnection = "UID=PWD=DSN=TestDB"

RS.Open

第二步,把要存储的图片转换成二进制长文件存入数据库中, *** 作过程如下

RS.AddNew

DataFile = 1

Open strPathPicture For Binary Access Read As DataFile

FileLen = LOF(DataFile) ' 文件中数据长度

If FileLen = 0 Then : Close DataFile : RS.Close : Exit Sub

Chunks = FileLen \ ChunkSize

Fragment = FileLen Mod ChunkSize

ReDim Chunk(Fragment)

Get DataFile, , Chunk()

RS!MyPhoto.AppendChunk Chunk()

ReDim Chunk(ChunkSize)

For i = 1 To Chunks

Get DataFile, , Chunk()

RS!MyPhoto.AppendChunk Chunk()

Next i

Close DataFile

第三步,更新纪录后,关闭数据库,就完成了数据图片到数据库的存储。

RS.Update

RS.Close

Set RS = Nothing

两种方法在使用方面各有所长,读者可以针对自己的情况做出合理的选择。


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

原文地址: http://outofmemory.cn/sjk/10005808.html

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

发表评论

登录后才能评论

评论列表(0条)

保存