Java编程中使用JDBC API连接数据库和创建程序的方法
|
JDBC连接数据库 涉及到建立一个JDBC连接的编程是相当简单的。下面是这些简单的四个步骤:
导入JDBC包: 使用标准的JDBC包,它允许选择,插入,更新和SQL表中删除数据,添加以下进口到您的源代码: import java.sql.* ; // for standard JDBC programs import java.math.* ; // for BigDecimal and BigInteger support 注册JDBC驱动程序: 需要做这个注册只能在你的程序一次。可以通过以下两种方式之一注册一个驱动程序。 方法(I)- Class.forName(): 下面的示例使用Class.forName()来注册Oracle驱动程序:
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
}
catch(ClassNotFoundException ex) {
System.out.println("Error: unable to load driver class!");
System.exit(1);
}
可以使用getInstance()方法来解决不兼容的JVM,但要编写了两个额外的例外情况如下:
try {
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
}
catch(ClassNotFoundException ex) {
System.out.println("Error: unable to load driver class!");
System.exit(1);
catch(IllegalAccessException ex) {
System.out.println("Error: access problem while loading!");
System.exit(2);
catch(InstantiationException ex) {
System.out.println("Error: unable to instantiate driver!");
System.exit(3);
}
方法(二) - DriverManager.registerDriver(): 应该,如果使用的是不兼容的JDK JVM,比如微软提供一个使用registerDriver()方法。 下面的示例使用registerDriver()来注册Oracle驱动程序:
try {
Driver myDriver = new oracle.jdbc.driver.OracleDriver();
DriverManager.registerDriver( myDriver );
}
catch(ClassNotFoundException ex) {
System.out.println("Error: unable to load driver class!");
System.exit(1);
}
数据库URL制定:
在这里,每个表单需要一个数据库URL。数据库的URL是指向数据库地址。 制定一个数据库URL是大多数用在建立连接相关。 下表列出了下来流行的JDBC驱动程序名和数据库的URL。 RDBMS JDBC驱动程序的名称 URL 格式 MySQL com.mysql.jdbc.Driver jdbc:mysql://hostname/ databaseName ORACLE oracle.jdbc.driver.OracleDriver jdbc:oracle:thin:@hostname:port Number:databaseName DB2 COM.ibm.db2.jdbc.net.DB2Driver jdbc:db2:hostname:port Number/databaseName Sybase com.sybase.jdbc.SybDriver jdbc:sybase:Tds:hostname: port Number/databaseName 以URL格式所有高亮的部分是静态的,需要改变只剩余部分按照数据库设置。 创建连接对象: 使用数据库URL的用户名和密码: 对URL数据库部分databaseName的值:假设使用的是Oracle的瘦驱动程序,需要指定一个主机:端口。 假设有一台主机TCP/IP地址192.0.0.1 以及主机名和Oracle监听器被配置为在端口1521,数据库名称是EMP,然后完整的数据库URL是: jdbc:oracle:thin:@amrood:1521:EMP 现在,必须调用适当的用户名和密码以及getConnection()方法来获得一个Connection对象,如下所示: String URL = "jdbc:oracle:thin:@amrood:1521:EMP"; String USER = "username"; String PASS = "password" Connection conn = DriverManager.getConnection(URL,USER,PASS); 只使用一个数据库URL: DriverManager.getConnection(String url); 然而,在这种情况下,数据库的URL,包括用户名和密码,并具有以下的一般形式: jdbc:oracle:driver:username/password@database 所以上面的连接可以创建如下: String URL = "jdbc:oracle:thin:username/password@amrood:1521:EMP"; Connection conn = DriverManager.getConnection(URL); 使用数据库的URL和一个Properties对象: DriverManager.getConnection(String url,Properties info); 为了使通过前面的例子中所做的相同的连接,使用下面的代码: import java.util.*; String URL = "jdbc:oracle:thin:@amrood:1521:EMP"; Properties info = new Properties( ); info.put( "user","username" ); info.put( "password","password" ); Connection conn = DriverManager.getConnection(URL,info); 关闭JDBC连接: 依托垃圾收集,特别是在数据库编程,是非常差的编程习惯。应该总是在关闭与连接对象关联的close()方法连接的习惯。 为了确保连接被关闭,可以在代码中的finally块执行。 finally块都会执行,不管是否发生或也不例外。 要关闭上面打开的连接,应该调用close()方法,如下所示: conn.close();
示例代码: 基于对环境和数据库安装在前面的章节中做此示例代码已写入。 复制下面的例子FirstExample.java,编译并运行,如下所示:
//STEP 1. Import required packages
import java.sql.*;
public class FirstExample {
// JDBC driver name and database URL
static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://localhost/EMP";
// Database credentials
static final String USER = "username";
static final String PASS = "password";
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
try{
//STEP 2: Register JDBC driver
Class.forName("com.mysql.jdbc.Driver");
//STEP 3: Open a connection
System.out.println("Connecting to database...");
conn = DriverManager.getConnection(DB_URL,PASS);
//STEP 4: Execute a query
System.out.println("Creating statement...");
stmt = conn.createStatement();
String sql;
sql = "SELECT id,first,last,age FROM Employees";
ResultSet rs = stmt.executeQuery(sql);
//STEP 5: Extract data from result set
while(rs.next()){
//Retrieve by column name
int id = rs.getInt("id");
int age = rs.getInt("age");
String first = rs.getString("first");
String last = rs.getString("last");
//Display values
System.out.print("ID: " + id);
System.out.print(",Age: " + age);
System.out.print(",First: " + first);
System.out.println(",Last: " + last);
}
//STEP 6: Clean-up environment
rs.close();
stmt.close();
conn.close();
}catch(SQLException se){
//Handle errors for JDBC
se.printStackTrace();
}catch(Exception e){
//Handle errors for Class.forName
e.printStackTrace();
}finally{
//finally block used to close resources
try{
if(stmt!=null)
stmt.close();
}catch(SQLException se2){
}// nothing we can do
try{
if(conn!=null)
conn.close();
}catch(SQLException se){
se.printStackTrace();
}//end finally try
}//end try
System.out.println("Goodbye!");
}//end main
}//end FirstExample
现在来编译上面的例子如下: C:>javac FirstExample.java (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Java编程常见内存溢出异常与代码示例
- java – MySQL日期值不正确:null
- java – Spring-security甚至在提交表单之前显示“Bad Cred
- 进一步理解Java中的多态概念
- Selenium 2(WebDriver)Java Maven Eclipse Hello World Pro
- Java线程池使用与原理详解
- 在指定的范围内,生成不重复的随机数序列(排除法,筛选法)
- java – Scanner.reset()不起作用
- Spring Boot如何使用Spring Security进行安全控制
- java – Tomcat 7嵌套CombinedRealm,LockoutRealm和DataSou
