JDBC
JDBC( Java DataBase Connectivity)是一种用于执行SQL语句的Java API。JDBC使得我们可以直接使用Java编程来对关系数据库进行操作。开发人员可以方便的使用纯Java API完成SQL的执行。
数据库驱动
安装好了数据库之后,Java程序也是不能直接使用数据库的,必须通过相应的数据库驱动程序去和数据库打交道。数据库驱动程序即数据库厂商对JDBC接口的实现类的jar文件。
JDBC使用步骤
本文以Java连接MySQL为例,需要进行一下步骤:
在进行JDBC的操作以前,需要安装并配置好数据库,并在Java工程中导入相应数据库的驱动包。
1.导入包
在程序的头部包含数据库编程所需要的JDBC类。一般情况下,使用java.sql.*就足够。
import java.sql.*;
2.注册JDBC驱动程序//1
Class.forName("com.mysql.jdbc.Driver");
//2
DriverManager.registerDriver(com.mysql.jdbc.Driver);
推荐使用第一种方法,不会对具体的驱动类产生依赖。
3.打开一个连接
使用DriverManager.getConnection()方法来创建一个Connection对象,它代表一个与数据库的物理连接。static final String DB_URL = "jdbc:mysql://localhost/wulei";
static final String USER = "root";
static final String PASS = "******";
Connection conn = DiverManage.getConnection(DB_URL, USER, PASS); DB_URL用来标识数据库的位置,通过URL地址告诉JDBC程序应该连接那个数据库,URL写法为: ::/主机:端口//数据库名> 4.执行SQL语句 可以使用Statement类或者PreparedStatement类。Statement类用于发送简单的SQL语句(不带参数)。PreparedStatement类用于发送一个或多个带参数的SQL语句,并且可以防止SQL注入。`
String id = new Scanner(System.in).nextLine();
String sql = "delete from table where id = "+id;
Statement stmt = conn.createStatement();
stmt.executeQuery(sql);
` 这样做存在SQL注入的危险,如果用户传入一个正常id如5,则能正常删除数据库中id=5的记录,如果用户传入的id为"5 or 1=1",那么将删除表中所有记录。 5.从数据集中提取数据`
ResultSet rs = stmt.executuQuery(sql);
while(rs.next()){
System.out.println("id: "+rs.getInt("id"));
System.out.println("name: "+rs.getString("name"));
}
` 6.关闭连接`
rs.close();
stmt.close();
conn.close();
` ## 一个JDBC程序示例 示例执行前我提前在数据库中添加了一个数据表websites。包含索引字段id,字段name,字段url。 下面是执行查询操作示例:
package sqlTest;
import java.sql.*;
public class mysqlTest {
static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String DB_URl = "jdbc:mysql://localhost/wulei";
static final String USER = "root";
static final String PASS = "******";
//UB_URL, USER, PASS depends on your own settings
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
try{
//register JDBC driver
Class.forName("com.mysql.jdbc.Driver");
//open a connection
conn = DriverManager.getConnection(DB_URl, USER, PASS);
//execute a query
stmt = conn.createStatement();
String sql ="select id, name, url from websites";
ResultSet rs = stmt.executeQuery(sql);
//extract data from ResultSet
while(rs.next()){
int id = rs.getInt("id");
String name = rs.getString("name");
String url = rs.getString("url");
System.out.println("ID: "+id);
System.out.println("Name: "+name);
System.out.println("URL: "+url);
}
rs.close();
stmt.close();
conn.close();
}catch(SQLException se){
se.printStackTrace();
}catch(Exception e){
e.printStackTrace();
}finally{
try{
if(stmt != null)
stmt.close();
}catch(SQLException se2){
se2.printStackTrace();
}
try{
if(conn != null)
conn.close();
}catch(SQLException se3){
se3.printStackTrace();
}
}
System.out.println("Goodbye");
}
} 输出: ![](http://wulei.kim/wp-content/uploads/2017/08/run3.png)