package com;
import java.sql.Blob;
import java.io.InputStream;
import java.io.FileInputStream;
import java.io.File;
import java.io.BufferedOutputStream;
import java.io.BufferedInputStream;
import java.sql.*;
import oracle.sql.BLOB;
import javax.swing.JFileChooser;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import javax.swing.filechooser.FileFilter;
public class ConnOracle
{
public ConnOracle(){
MyFrame win = new MyFrame();
win.validate();
//win.pack();
win.setLocation(200,200);
win.setVisible(true);
}
public static void main(String[] args) {
new ConnOracle();
}
}
class MyFrame extends JFrame{
JPanel contentPane;
JButton bt_choose = new JButton();
JButton bt_exit = new JButton();
int result;
public MyFrame(){
this.setSize(new Dimension(200,80));
this.setTitle("WELCOME TO YOU");
bt_choose.addActionListener(new MyActionListener(this));
bt_choose.setText("选择文件");
bt_exit.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.exit(0);
}
} );
bt_exit.setText("退出");
contentPane = (JPanel)this.getContentPane();
contentPane.setLayout(new FlowLayout());
contentPane.add(bt_choose);
contentPane.add(bt_exit);
}
public void choose_file(){
String pathname =null;
String filename = null;
JFileChooser filechooser = new JFileChooser();
filechooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
JasperFileFilter jasperFileFilter = new JasperFileFilter("jasper");
filechooser.setFileFilter(jasperFileFilter);
result = filechooser.showOpenDialog(this);
if(result==JFileChooser.CANCEL_OPTION){
System.out.println("没选择文件!");
}else{
try{
File openfile = filechooser.getSelectedFile();
filename = openfile.getName();
pathname = openfile.getPath();
System.out.println("filename="+filename);
System.out.println("pathname="+pathname);
if(!(openfile.isFile())){
System.out.println("没有此文件!");
return ;
}
int index = filename.lastIndexOf('.');
if (index > 0 && index < filename.length() - 1) {
String extension = filename.substring(index + 1).toLowerCase();
if (!(extension.equals("jasper"))){
System.out.println("您选择的文件不正确!");
return ;
}
}
filename = filename.substring(0,index);
System.out.println("filename="+filename);
}catch(Exception e){
System.out.println("error="+e);
}
try{
int report_id= 0;
String report_name = filename;
String flag = null;
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.1.17:1521:gzscdb","klxuser","5583");
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select * from reports where report_name='"+report_name+"'");
if(rs.next()){
int i = JOptionPane.showConfirmDialog(this,"是否要更新!","window",JOptionPane.YES_NO_OPTION);
if(i == 1){
System.out.println("不更新!");
return ;
}
flag = "up";
}else{
flag = "insert" ;
}
rs.close();
stmt.close();
Statement stmt_max = conn.createStatement();
ResultSet rs_max = stmt_max.executeQuery("SELECT MAX(REPORT_ID) + 1 AS REPORT_ID FROM REPORTS");
if(rs_max.next()){
report_id = rs_max.getInt("report_id");
}
if(report_id==0){
report_id = 1;
}
System.out.println("report_id="+report_id);
rs_max.close();
stmt_max.close();
Statement stmt_end = conn.createStatement();
if(flag.equals("insert")){
boolean defaultCommit = conn.getAutoCommit();
conn.setAutoCommit(false);
try{
System.out.println( "1");
stmt_end.executeUpdate("INSERT INTO REPORTS VALUES ('"+report_id+"', '"+report_name+"',EMPTY_BLOB())");
System.out.println( "2");
ResultSet rs_end = stmt_end.executeQuery("SELECT REPORT_DATA FROM REPORTS WHERE REPORT_ID='"+report_id+"' FOR UPDATE");
System.out.println( "3");
while (rs_end.next()) {
oracle.sql.BLOB blob = (oracle.sql.BLOB) rs_end.getBlob("REPORT_DATA");
File infile = new File(pathname );
BufferedOutputStream out = new BufferedOutputStream(blob.getBinaryOutputStream());
BufferedInputStream in = new BufferedInputStream(new FileInputStream(infile));
int c;
while ((c=in.read())!=-1) {
out.write(c);
}
in.close();
out.close();
}
conn.commit();
} catch (Exception ex) {
conn.rollback();
throw ex;
}
conn.setAutoCommit(defaultCommit);
System.out.println( "insert ok!");
}else if(flag.equals("up")){
boolean defaultCommit = conn.getAutoCommit();
conn.setAutoCommit(false);
try {
stmt_end.executeUpdate("UPDATE REPORTS SET REPORT_DATA=EMPTY_BLOB() WHERE REPORT_NAME='"+report_name+"'");
ResultSet rs_end = stmt_end.executeQuery("SELECT REPORT_DATA FROM REPORTS WHERE REPORT_NAME='"+report_name+"' FOR UPDATE");
while (rs_end.next()) {
oracle.sql.BLOB blob = (oracle.sql.BLOB)rs_end.getBlob("REPORT_DATA");
File infile = new File(pathname );
BufferedOutputStream out = new BufferedOutputStream(blob.getBinaryOutputStream());
BufferedInputStream in = new BufferedInputStream(new FileInputStream(infile));
int c;
while ((c=in.read())!=-1) {
out.write(c);
}
in.close();
out.close();
}
conn.commit();
} catch (Exception ex) {
conn.rollback();
throw ex;
}
conn.setAutoCommit(defaultCommit);
System.out.println( "update ok!");
}
stmt_end.close();
conn.close();
System.out.println( "all ok");
}catch (Exception e){
System.out.println("error+"+e);
}
}
}
protected void processWindowEvent(WindowEvent e){
if(e.getID()==WindowEvent.WINDOW_CLOSING){
System.exit(0);
}
}
}
class MyActionListener implements ActionListener{
MyFrame myframe;
public MyActionListener(MyFrame frame){
myframe = frame;
}
public void actionPerformed(ActionEvent e){
myframe.choose_file();
}
}
class JasperFileFilter extends FileFilter {
String ext; // 文件扩展名
JasperFileFilter(String ext) {
this.ext = ext;
}
public boolean accept(File file) {
if (file.isDirectory()) // 是目录,打开
return true;
String fileName = file.getName();
int index = fileName.lastIndexOf('.');
if (index > 0 && index < fileName.length() - 1) {
String extension = fileName.substring(index + 1).toLowerCase();
if (extension.equals(ext))
return true;
}
return false;
}
public String getDescription() { // 返回描述文件的说明字符串
if (ext.equals("jasper"))
return "jasper File (*.jasper)";
return "";
}
}
分享到:
相关推荐
在提供的文件`MysqlToOracle.java`中,可能包含了将MySQL数据转换并插入到ORACLE数据库的代码示例。这个过程可能涉及到数据类型转换、连接管理、事务控制以及上述的性能优化策略。在实际应用中,需要确保代码正确...
在Oracle数据库中插入图片涉及到BLOB(Binary Large Object)数据类型,这是Oracle用来存储大量二进制数据,如图片、音频或视频文件等的一种方式。本文将详细介绍如何在Oracle数据库中插入、查询和管理图片。 首先...
深入分析 Oracle 日志文件 Oracle 日志文件是 Oracle 数据库管理员 (DBA) 实现数据库恢复和追踪用户操作的重要工具。通过分析 Oracle 日志文件,可以追踪用户的恶意操作、恢复误删除的数据、执行事后审计等。Oracle...
这个文件是用oracle的脚本的如的,往oracle中插入的数据量可能会使用
在Oracle中,插入数据到表中的主要语句是`INSERT INTO`,它允许你将新记录添加到已存在的表中。下面我们将深入探讨Oracle SQL语句插入数据的相关知识点。 一、基本语法 Oracle SQL 插入数据的基本语法如下: ```...
本文将详细介绍如何使用存储过程将文件插入到Oracle数据库中的具体步骤及注意事项。 #### 一、创建目录权限 为了能够进行文件操作,首先需要确保用户具有相应的目录权限。这里使用`SYSDBA`角色授予`IMAGE`用户创建...
2. 编写对应的Mapper XML文件,创建SQL语句,利用`<foreach>`标签处理批量插入: ```xml INSERT INTO user (id, name, age) (" separator="," close=")"> VALUES ( #{item.id}, #{item.name}, #{item.age} )...
标题中的“通过.bat文件连接Oracle 插入数据库记录”指的是使用批处理(.bat)脚本来操作Oracle数据库,实现数据的插入功能。Oracle是全球知名的关系型数据库管理系统,而批处理脚本则是在Windows操作系统中运行的一...
根据给定文件的信息,“Oracle插入大量数据”的主题围绕着几种有效的策略展开,旨在提升Oracle数据库在大数据量场景下的性能表现。 ### 高速存储设备的应用 首先提及的是采用高速的存储设备来提升读写能力。EMC和...
"Java编程将TXT文件数据导入Oracle数据库" Java 编程将 TXT 文件数据导入 Oracle 数据库是指使用 Java 语言编写程序将 TXT 文件中的数据导入 Oracle 数据库中,以方便进行计算、统计等操作。下面将详细介绍该知识...
3. **批量插入**:在Oracle OCI中,批量插入通常涉及使用oci_bind_array_by_name函数将一组数据绑定到同一个SQL插入语句中的多个占位符。这组数据可以是二维数组或其他合适的数据结构。执行oci_execute时,数据库一...
此外,如果Excel文件非常大,还可以考虑先将数据导出为CSV文件,然后通过SQL*Loader等工具快速导入到Oracle数据库。 总之,将Excel数据插入Oracle数据库涉及的关键技术点包括:Excel文件的读取(如使用pandas)、...
在Oracle数据库管理中,配置文件优化是提升系统性能的关键步骤之一。主要涉及的文件有INIT.ORA、SPFILE和PFILE,它们都是控制数据库运行的重要参数文件。了解并正确配置这些文件,能有效提高数据库的运行效率,降低...
Java 中 XML 文件的处理及 Oracle 中 XMLType 的插入和读取 Java 中 XML 文件的处理是指在 Java 应用程序中处理和操作 XML 文件的过程。在 Oracle 数据库中,XMLType 是一种特殊的数据类型,用于存储和处理 XML ...
它支持多种数据类型,包括BFILE和BLOB,后者常用于存储大对象,如图片、文档或视频,这在文件上传场景中非常关键。 文件上传通常涉及以下几个步骤: 1. **用户界面**:首先,你需要创建一个用户界面,允许用户选择...
可实现批量插入记录,免去一条条复制语句之苦.
在软件开发过程中,尤其是在处理数据库中的二进制大对象(Binary Large Object, 简称BLOB)时,经常需要将数据库中的BLOB数据转换为文件进行读取或处理。本文将详细介绍如何使用C#语言结合Oracle数据库实现这一功能...
在"InsertData"文件中,可能包含了实现上述操作的示例代码或脚本,通过这些示例,你可以学习如何有效地批量插入数据到Oracle数据库。实践中,根据具体业务需求,可能还需要对这些方法进行适当的调整和优化。理解并...
本文将详细探讨如何在Oracle数据库中进行批量插入优化,并介绍MyBatis Generator这一自动化代码生成工具,以提高开发效率。 首先,让我们深入理解Oracle数据库中的批量插入。批量插入可以显著提升性能,尤其是在...
2. **利用PL/SQL程序**:编写PL/SQL存储过程或者匿名块,通过Oracle的DBMS_LOB和UTL_FILE包读取Excel文件内容,逐行处理并插入到数据库中。这种方法灵活性高,可以处理复杂的转换逻辑,但需要一定的编程技能。 3. *...