mysql jdbc 6_Java笔记(6) JDBC基础(以MySQL为例)

2ff34e647e2e3cdfd8dca593e17d9b0a.png

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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值