Oracle中编写程序抽取数据的实践(oracle中写程序抽数)
Oracle中编写程序抽取数据的实践
Oracle数据库是目前较为主流的企业级数据库之一,在日常工作中很多时候需要从Oracle数据库中抽取数据,这时候就需要编写程序来实现。本文将介绍在Oracle中编写程序抽取数据的实践,包括连接数据库、查询数据和处理数据等方面。
连接数据库
在编写程序之前,首先需要连接数据库。在Oracle中,连接数据库需要使用JDBC(Java Database Connectivity)技术,这是Java平台上提供的用于连接各种关系型数据库的一种标准API。下面是连接Oracle数据库的示例代码:
import java.sql.*;
public class OracleConnection { static final String DB_URL = "jdbc:oracle:thin:@localhost:1521:orcl";
static final String USER = "username"; static final String PASS = "password";
public static void mn(String[] args) { Connection conn = null;
Statement stmt = null; try {
Class.forName("oracle.jdbc.driver.OracleDriver"); System.out.println("Connecting to database...");
conn = DriverManager.getConnection(DB_URL,USER,PASS); System.out.println("Connected database successfully...");
stmt = conn.createStatement(); // ...
} catch (SQLException se) { se.printStackTrace();
} catch (Exception e) { e.printStackTrace();
} finally { try {
if(stmt!=null) conn.close();
} catch (SQLException se) {
} try {
if(conn!=null) conn.close();
} catch (SQLException se) { se.printStackTrace();
} }
System.out.println("Finished!"); }
}
上面代码中的DB_URL是数据库的连接字符串,格式为“jdbc:oracle:thin:@主机地址:端口号:数据库实例名”,USER和PASS分别是数据库的用户名和密码。在连接数据库之后,可以将Connection对象传递给Statement对象进行数据查询。
查询数据
在Oracle中,可以使用SQL语句来查询数据。在Java中,可以使用Statement对象来执行SQL语句。下面是一个查询数据的示例代码:
import java.sql.*;
public class OracleQuery { static final String DB_URL = "jdbc:oracle:thin:@localhost:1521:orcl";
static final String USER = "username"; static final String PASS = "password";
public static void mn(String[] args) { Connection conn = null;
Statement stmt = null; try {
Class.forName("oracle.jdbc.driver.OracleDriver"); System.out.println("Connecting to database...");
conn = DriverManager.getConnection(DB_URL,USER,PASS); System.out.println("Connected database successfully...");
stmt = conn.createStatement(); String sql = "SELECT * FROM emp";
ResultSet rs = stmt.executeQuery(sql); while(rs.next()) {
int id = rs.getInt("id"); String name = rs.getString("name");
String department = rs.getString("department"); double salary = rs.getDouble("salary");
System.out.println("ID: " + id); System.out.println("NAME: " + name);
System.out.println("DEPARTMENT: " + department); System.out.println("SALARY: " + salary);
} rs.close();
// ... } catch (SQLException se) {
se.printStackTrace(); } catch (Exception e) {
e.printStackTrace(); } finally {
try { if(stmt!=null)
conn.close(); } catch (SQLException se) {
} try {
if(conn!=null) conn.close();
} catch (SQLException se) { se.printStackTrace();
} }
System.out.println("Finished!"); }
}
上面代码中的sql变量保存了查询语句,可以根据实际需求修改。执行查询语句后,可以使用ResultSet对象遍历查询结果。
处理数据
在从Oracle数据库抽取数据后,有时需要进行一些处理,例如计算某些字段的平均值,或者将某些数据输出到文件中等等。下面是一个处理数据的示例代码:
import java.sql.*;
import java.io.*;
public class OracleHandler { static final String DB_URL = "jdbc:oracle:thin:@localhost:1521:orcl";
static final String USER = "username"; static final String PASS = "password";
public static void mn(String[] args) { Connection conn = null;
Statement stmt = null; try {
Class.forName("oracle.jdbc.driver.OracleDriver"); System.out.println("Connecting to database...");
conn = DriverManager.getConnection(DB_URL,USER,PASS); System.out.println("Connected database successfully...");
stmt = conn.createStatement(); String sql = "SELECT AVG(salary) FROM emp";
ResultSet rs = stmt.executeQuery(sql); if(rs.next()) {
double avg = rs.getDouble(1); System.out.println("AVG SALARY: " + avg);
} rs.close();
sql = "SELECT * FROM emp"; rs = stmt.executeQuery(sql);
FileWriter fw = new FileWriter("emp.txt"); while(rs.next()) {
int id = rs.getInt("id"); String name = rs.getString("name");
String department = rs.getString("department"); double salary = rs.getDouble("salary");
fw.write(id + "," + name + "," + department + "," + salary + "\n"); }
fw.close(); rs.close();
// ... } catch (SQLException se) {
se.printStackTrace(); } catch (Exception e) {
e.printStackTrace(); } finally {
try { if(stmt!=null)
conn.close(); } catch (SQLException se) {
} try {
if(conn!=null) conn.close();
} catch (SQLException se) { se.printStackTrace();
} }
System.out.println("Finished!"); }
}
上面代码中,第一个SQL语句计算了emp表中salary字段的平均值,并将结果输出到控制台;第二个SQL语句查询了emp表的所有数据,并将结果输出到文件中。在Java中,可以通过FileWriter类来将数据输出到文件中,具体实现可以根据需求修改。
总结
以上是Oracle中编写程序抽取数据的实践,涵盖了连接数据库、查询数据和处理数据等方面。在编写程序抽取数据时需要注意数据库安全性和数据完整性,以及代码的可读性和可维护性。在实践中,可以结合具体业务需求,灵活使用相关技术,实现高效、安全、稳定的数据抽取工作。