java和数据库可以连接,但是怎么把图片放到数据库中。

java和数据库可以连接,但是怎么把图片放到数据库中。,第1张

java基本上可以任何数据库进行连接,比如:mysql,sqlserver,oracle等,只是连接的方式,驱动不同罢了。

存的问题:一般来讲都是存的路径,如果你非要存也能存,需要把转换成二进制字节,进行存储。

如果强调安全,存二进制。

如果强调方便,存路径。

首先这是一种SB做法,保存到数据库这个很浪费数据库资源, 通常情况下等文件都是用ftp服务器来存储文件的 为什么要用base64进行编码是因为, base64会把文件这个文件转换成字符串, base64编码后得到的是一组字符串, 为什么要用blob类型, 因为这个类型可以存储4GB数据, 数据库中普通的 varchar varchar2 text等类型都有长度的限制

把上传的照片存到服务器下并把路径存入数据库,读取时使用File对象根据数据库内存储的照片路径读取照片。注意from表单的这两个属性enctype="multipart/from-data" method="post"

oracle如下

数据库中提供了两种字段类型 Blob 和 Clob 用于存储大型字符串或二进制数据(如)。

Blob 采用单字节存储,适合保存二进制数据,如文件。

Clob 采用多字节存储,适合保存大型文本数据。

首先创建一个空 Blob/Clob 字段,再从这个空 Blob/Clob字段获取游标,例如下面的代码:

PreparedStatement ps = connprepareStatement( " insert into PICTURE(image,resume) values(,) " );

// 通过oralcesqlBLOB/CLOBempty_lob()构造空Blob/Clob对象

pssetBlob( 1 ,oraclesqlBLOBempty_lob());

pssetClob( 2 ,oraclesqlCLOBempty_lob());

psexcuteUpdate();

psclose();

// 再次对读出Blob/Clob句柄

ps = connprepareStatement( " select image,resume from PICTURE where id= for update " );

pssetInt( 1 , 100 );

ResultSet rs = psexecuteQuery();

rsnext();

oraclesqlBLOB imgBlob = (oraclesqlBLOB)rsgetBlob( 1 );

oraclesqlCLOB resClob = (oraclesqlCLOB)rsgetClob( 2 );

// 将二进制数据写入Blob

FileInputStream inStream = new FileInputStream( " c://imagejpg " );

OutputStream outStream = imgBlobgetBinaryOutputStream();

byte [] buf = new byte [ 10240 ];

int len;

while (len = inStreamread(buf) > 0 ) {

outStreamwrite(buf, 0 ,len);

}

inStreamclose();

outStreamcloese();

// 将字符串写入Clob

resClobputString( 1 , " this is a clob " );

// 再将Blob/Clob字段更新到数据库

ps = connprepareStatement( " update PICTURE set image= and resume= where id= " );

pssetBlob( 1 ,imgBlob);

pssetClob( 2 ,resClob);

pssetInt( 3 , 100 );

psexecuteUpdate();

psclose();

这种代码网上不是一大片吗

public boolean storeImage(File file){

        try{

            // 打开文件

            FileInputStream fin = new FileInputStream(file);

            // 建一个缓冲保存数据

            ByteBuffer nbf = ByteBufferallocate((int) filelength());

            byte[] array = new byte[1024];

            int offset = 0, length = 0;

            // 读存数据

            while((length = finread(array)) > 0){

                if(length != 1024) nbfput(array,0,length);

                else nbfput(array);

                offset += length;

            }

            // 关闭文件

            finclose();

            // 新建一个数组保存要写的内容

            byte[] content = nbfarray();

            String sql = "insert into images (bin_data) values () ";

            PreparedStatement pstmt = connprepareStatement(sql);

            pstmtsetBytes(1,content);

            pstmtexecute();

            pstmtclose();

        }catch(Exception e){

            eprintStackTrace();

            return false;

        }

        return true;

    }

有一个比较简单的方法可以得到这个类型名称

通过

resultSet = statementexecuteQuery("select image列 from table");

resultSetMetaData = resultSetgetMetaData();

Systemoutprintln(resultStetMetaDatagetColumnClassName(1));

以上就是关于java和数据库可以连接,但是怎么把图片放到数据库中。全部的内容,包括:java和数据库可以连接,但是怎么把图片放到数据库中。、Java 保存图片到数据库时,为什么要对图片进行base64编码、java web中怎么把上传照片额地址存入数据库然后再读出来等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存