1.java数据库操作
如何通过JDBC访问数据库?
说明:用于在java程序中实现数据库操作功能,提供了执行SQL语句、访问各种数据库的方法,并为数据库提供了统一的接口。
具体步骤:1)加载JDBC驱动器(位于客户端和服务器端之间,是一种中间桥梁,将数据库驱动加载到classpath中,
在基于javaEE的web应用的开发过程,常常要把目标数据库产品的JDBC驱动复制到web-INF/lib下。
2)加载JDBC驱动,并将其注册到DriveManager中。一般用反射
class.forName(String driveName).
3)建立数据库连接,取得Connection对象。一般通过DriveManager.getConnection(url,username,passwd)方法实现,
其中,url表示连接数据库的字符串,username连接数据库的用户名,passwd表示连接的数据库的密码。
4)建立Statement对象或PreparedStatement对象。
5)执行SQL语句。
6)访问结果集ResultSet对象。
7)依旧将ResultSet/Statement/PreparedStatement/
Connection对象关闭,释放掉所有的资源,例如rs.close()/
con.close()等。为什么要这么做呢?原因在于JDBC驱动底层通常
都是通过网络IO实现SQL命令与数据传输的。
用MySQL连接数据库:
Class.forName(“org.gjt.mm.mysql.Driver”);//用反射加载驱动
String url=“jdbc:mysql://localhost/sample?user=sa password=sa”;//连接数据库的字符串、用户名、密码
Connection con=DriverManager.getConnection(url);//建立数据库连接,取得Connection对象
import java.sql.*; public class TestMysqlConnection{ public static void main(String[] args) { Connection conn=null; Statement stmt=null; Resultset rs=null; //导入数据库的过程,操作文件菜单 try{ class.forName("com.mysql.jdbc.Driver"); //这里是干什么的? conn=DriverManager.getConnection("jdbc:mysql://localhost/mydata?user="root&password=root&password=root"); //连接已经存在的数据库 stmt=conn.creatStatement(); //获得数据 rs=stmt.executeQuery(); while(rs.next()){ System.out.println(rs.getString("deptno")); //访问数据库中的表 } }catch (ClassNotFoundException e) { e.printStackTrace(); } catch(Exception ex) { System.out.println("sqlException:"+ex.getMessage()); System.out.println("sqlState:"+ex.getSqlState()); System.out.println("VendorError:"+ex.getErrorCode()); }finally{ try{ if (rs !=null) { rs.close(); rs.null; } }catch (SQLException e) { e.printStackTrace(); } } } }
再看一个例子:
1.导入JDBC驱动,
即首先导入.jar文件(
a. 选中建立好的工程Test,点击右键,选择Properties,
b. 选择Java Build Path 在右边选择Libraries,点击Add External JARs...
c. 导入正确的驱动连接的包
d、选择Order and Export,勾选上我们刚刚导入进来的包,最后点击OK就可以了。
)
然后建立数据库、库下建表、插入值
2.java程序访问数据库
package com.shiyanlou; import java.sql.*; public class JdbcTest { // JDBC 驱动器名称 和数据库地址 static final String JDBC_DRIVER = "com.mysql.jdbc.Driver"; //数据库的名称为 EXAMPLE static final String DB_URL = "jdbc:mysql://localhost/EXAMPLE"; // 数据库用户和密码 static final String USER = "root"; static final String PASS = ""; public static void main(String[] args) { Connection conn = null; Statement stmt = null; try{ //注册JDBC 驱动程序 Class.forName("com.mysql.jdbc.Driver"); //打开连接 System.out.println("Connecting to database..."); conn = DriverManager.getConnection(DB_URL,USER,PASS); //执行查询 System.out.println("Creating statement..."); stmt = conn.createStatement(); String sql; sql = "SELECT id, name, age FROM Students"; ResultSet rs = stmt.executeQuery(sql); //得到和处理结果集 while(rs.next()){ //检索 int id = rs.getInt("id"); int age = rs.getInt("age"); String name = rs.getString("name"); //显示 System.out.print("ID: " + id); System.out.print(", Age: " + age); System.out.print(", Name: " + name); System.out.println(); } //清理环境 rs.close(); stmt.close(); conn.close(); }catch(SQLException se){ // JDBC 操作错误 se.printStackTrace(); }catch(Exception e){ // Class.forName 错误 e.printStackTrace(); }finally{ //这里一般用来关闭资源的 try{ if(stmt!=null) stmt.close(); }catch(SQLException se2){ } try{ if(conn!=null) conn.close(); }catch(SQLException se){ se.printStackTrace(); } } System.out.println("Goodbye!"); } }