重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

如何读取oracle,如何读取图片上的文字

如何在java中读取oracle blob

整个流程分为四步,连接oracle数据库 - 读取blob图片字段 - 对图片进行缩放 -把图片展示在jsp页面上。

为元宝等地区用户提供了全套网页设计制作服务,及元宝网站建设行业解决方案。主营业务为成都网站制作、成都网站建设、元宝网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

下面进行详细描述:

1. java连接Oracle

注:数据库是Oracle10g版本为10.2.0, 在数据库中,图片字段类型为BLOB。

java中通常使用的是通过jdbc驱动来连接数据库,oracle也不例外,因此必须下载一个Oracle驱动的jdbc需要去网上进行下载,名称为 ojdbc14.jar。

下载地址为:

下载了驱动之后,可以使用驱动里提供的接口进行连接,具体代码如下:

import java.sql.*;

import java.io.*;

import javax.imageio.ImageIO;

import java.awt.image.BufferedImage;

import java.awt.image.AffineTransformOp;

import java.awt.geom.AffineTransform;

public class OracleQueryBean {

private final String oracleDriverName = "oracle.jdbc.driver.OracleDriver";

private Connection myConnection = null;

/*图片表名*/

private String strTabName;

/*图片ID字段名*/

private String strIDName;

/*图片字段名*/

private String strImgName;

/**

* 加载java连接Oracle的jdbc驱动

*/

public OracleQueryBean(){

try{

Class.forName(oracleDriverName);

}catch(ClassNotFoundException ex){

System.out.println("加载jdbc驱动失败,原因:" + ex.getMessage());

}

}

/**

* 获取Oracle连接对象

* @return Connection

*/

public Connection getConnection(){

try{

//用户名+密码; 以下使用的Test就是Oracle里的表空间

//从配置文件中读取数据库信息

GetPara oGetPara = new GetPara();

String strIP = oGetPara.getPara("serverip");

String strPort = oGetPara.getPara("port");

String strDBName = oGetPara.getPara("dbname");

String strUser = oGetPara.getPara("user");

String strPassword = oGetPara.getPara("password");

this.strTabName = oGetPara.getPara("tablename");

this.strIDName = oGetPara.getPara("imgidname");

this.strImgName = oGetPara.getPara("imgname");

String oracleUrlToConnect ="jdbc:oracle:thin:@"+strIP+":"+strPort+":"+strDBName;

this.myConnection = DriverManager.getConnection(oracleUrlToConnect, strUser, strPassword);

}catch(Exception ex){

System.out.println("Can not get connection:" + ex.getMessage());

System.out.println("请检测配置文件中的数据库信息是否正确." );

}

return this.myConnection;

}

}

2. 读取blob字段

在OracleQueryBean类中增加一个函数,来进行读取,具体代码如下:

/**

* 根据图片在数据库中的ID进行读取

* @param strID图片字段ID

* @param w 需要缩到的宽度

* @param h 需要缩到高度

* @return

*/

public byte[] GetImgByteById(String strID, int w, int h){

//System.out.println("Get img data which id is " + nID);

if(myConnection == null)

this.getConnection();

byte[] data = null;

try {

Statement stmt = myConnection.createStatement();

ResultSet myResultSet = stmt.executeQuery("select " + this.strIDName + " from " + this.strTabName + " where " + this.strIDName + "=" + strID);

StringBuffer myStringBuffer = new StringBuffer();

if (myResultSet.next()) {

java.sql.Blob blob = myResultSet.getBlob(this.strImgName);

InputStream inStream = blob.getBinaryStream();

try {

long nLen = blob.length();

int nSize = (int) nLen;

//System.out.println("img data size is :" + nSize);

data = new byte[nSize];

inStream.read(data);

inStream.close();

} catch (IOException e) {

System.out.println("获取图片数据失败,原因:" + e.getMessage());

}

data = ChangeImgSize(data, w, h);

}

System.out.println(myStringBuffer.toString());

myConnection.commit();

myConnection.close();

} catch (SQLException ex) {

System.out.println(ex.getMessage());

}

return data;

}

3. 缩放图片

因为图片的大小可能不一致,但是在页面中输出的大小需要统一,所以需要

在OracleQueryBean类中增加一个函数,来进行缩放,具体代码如下:

/**

* 缩小或放大图片

* @param data 图片的byte数据

* @param w 需要缩到的宽度

* @param h 需要缩到高度

* @return 缩放后的图片的byte数据

*/

private byte[] ChangeImgSize(byte[] data, int nw, int nh){

byte[] newdata = null;

try{

BufferedImage bis = ImageIO.read(new ByteArrayInputStream(data));

int w = bis.getWidth();

int h = bis.getHeight();

double sx = (double) nw / w;

double sy = (double) nh / h;

AffineTransform transform = new AffineTransform();

transform.setToScale(sx, sy);

AffineTransformOp ato = new AffineTransformOp(transform, null);

//原始颜色

BufferedImage bid = new BufferedImage(nw, nh, BufferedImage.TYPE_3BYTE_BGR);

ato.filter(bis, bid);

//转换成byte字节

ByteArrayOutputStream baos = new ByteArrayOutputStream();

ImageIO.write(bid, "jpeg", baos);

newdata = baos.toByteArray();

}catch(IOException e){

e.printStackTrace();

}

return newdata;

}

4. 展示在页面

页面使用OracleQueryBean来根据用户提供的图片id进行查询,在读取并进行缩放后,通过jsp页面进行展示,具体代码如下:

%@ page language="java" contentType="text/html;;charset=gbk" %

jsp:useBean id="OrcleQuery" scope="page" class="HLFtiDemo.OracleQueryBean" /

%

response.setContentType("image/jpeg");

//图片在数据库中的 ID

String strID = request.getParameter("id");

//要缩略或放大图片的宽度

String strWidth = request.getParameter("w");

//要缩略或放大图片的高度

String strHeight = request.getParameter("h");

byte[] data = null;

if(strID != null){

int nWith = Integer.parseInt(strWidth);

int nHeight = Integer.parseInt(strHeight);

//获取图片的byte数据

data = OrcleQuery.GetImgByteById(strID, nWith, nHeight);

ServletOutputStream op = response.getOutputStream();

op.write(data, 0, data.length);

op.close();

op = null;

response.flushBuffer();

//清除输出流,防止释放时被捕获异常

out.clear();

out = pageContext.pushBody();

}

%

5. OracleQueryBean查询类的整体代码

OracleQueryBean.java文件代码如下所示:

import java.sql.*;

import java.io.*;

import javax.imageio.ImageIO;

import java.awt.image.BufferedImage;

import java.awt.image.AffineTransformOp;

import java.awt.geom.AffineTransform;

public class OracleQueryBean {

private final String oracleDriverName = "oracle.jdbc.driver.OracleDriver";

private Connection myConnection = null;

/*图片表名*/

private String strTabName;

/*图片ID字段名*/

private String strIDName;

/*图片字段名*/

private String strImgName;

/**

* 加载java连接Oracle的jdbc驱动

*/

public OracleQueryBean(){

try{

Class.forName(oracleDriverName);

}catch(ClassNotFoundException ex){

System.out.println("加载jdbc驱动失败,原因:" + ex.getMessage());

}

}

/**

* 获取Oracle连接对象

* @return Connection

*/

public Connection getConnection(){

try{

//用户名+密码; 以下使用的Test就是Oracle里的表空间

//从配置文件中读取数据库信息

GetPara oGetPara = new GetPara();

这文章确实写的不错,你可以看原文

如何读取远程oracle视图数据

1. 获得远程数据库的tns信息和要访问的对象的拥有者及其密码

2.创建dblink

create database link "DBLINK_NAME" connect to "USER_NAME" identified by "PASSWD" using ' (DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = lnwxzyp)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = demo)

)

)

';

3.查看

select * from view_name@dblink_name;

也可以建成同义词

create synonym OBJ_NAME for view_name@dblink_name;

建成视图

create view VIEW_NAME as select * from view_name@dblink_name;

如何读取Oracle的BLOB字段里的文件

楼主你好!根据你的描述,让我来给你回答!

create table temp_blob as select blob_colname from tbname ;

然后使用exp或者expdp 。

或者你也可以使用第三方编程语言或者软件来导出。

希望能帮到你,如果满意,请记得采纳哦~~~

Oracle读取数据

错误没贴出来。 我只能猜测:

string sql = "select * from t_users where USER=@USER and PASS=@PASS";

string[,] UserInfo = { { "@Uname", loginInfo.UName }, { "@UID", loginInfo.UPassword } };

改成

string sql = "select * from t_users where USER=:USER and PASS=:PASS";

string[,] UserInfo = { { "Uname", loginInfo.UName }, { "UID", loginInfo.UPassword } };

试试

如何用python读取oracle数据库

下载cx_Oracle,下载之后就可以使用了。

简单的使用流程如下:

1.引用模块cx_Oracle2.连接数据库3.获取cursor4.使用cursor进行各种操作5.关闭cursor6.关闭连接

参考代码:

import cx_Oracle                                          #引用模块cx_Oracleconn=cx_Oracle.connect('load/123456@localhost/ora11g')    #连接数据库c=conn.cursor()                                           #获取cursorx=c.execute('select sysdate from dual')                   #使用cursor进行各种操作x.fetchone()c.close()                                                 #关闭cursorconn.close()                                              #关闭连接

如何编程读取oracle的dmp文件中的表数据

操作步骤:

1、开始-输入cmd,进入命令提示符。

2、进到C盘根目录

3、输入命令

imp 用户名/密码@数据库实例名 file=load.dmp log=load.log TABLES=(表名)

4、敲入回车,等待导入结束。

提示:步骤3的中文部分,请根据自己数据库的情况进行更改。


网页名称:如何读取oracle,如何读取图片上的文字
文章转载:http://cqcxhl.com/article/dsspide.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP