mysql jdbc简介_JDBC入门简介详解

JDBC入门:

JDBC(Java Data Base Connectivity),java数据库连接。

准备:

开发工具:eclipse

数据库: MySQL

jar包:mysql-connector-java-5.1.22-bin.jar

JDBC helloworld,编写流程

- 0 导入jar包(驱动)

- 1 注册驱动

- 2 获得链接

- 3 获得语句执行者

- 4 执行sql语句

- 5 处理结果

- 6 释放资源

Jvav 代码:

package com.my.jdbc;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.Statement;

public class MyJdbcTest {

public static void main(String[] args) throws Exception {

// 1 注册驱动

Class.forName("com.mysql.jdbc.Driver");

// 2 获得链接

Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "root", "1234");

// 3 获得语句执行者

Statement st = conn.createStatement();

// 4 执行sql语句

ResultSet rs = st.executeQuery("select * from users");

// 5 处理结果

while (rs.next()) {

String id = rs.getString("id");

String name = rs.getString("name");

int age = rs.getInt("age");

System.out.println(id + " # " + name + " # " + age);

}

// 6 释放资源

rs.close();

st.close();

conn.close();

}

}

结果:

352b2c3677f56a61e59495382f4129ba.gif

JDBC API详解

1 注册驱动

接口:java.sql.Driver ,每个驱动程序类必须实现的接口

工具类:java.sql.DriverManager ,驱动管理类

提供一个static方法:registerDriver(Driver driver) ,注册驱动

最终代码:Class.forName(“com.mysql.jdbc.Driver”);

2 获得链接

接口:java.sql.Connection,与特定数据库的连接

获得链接:DriverManger.getConnection(url,user,password)

user –> 数据库的用户名

password –> 用户名对应的密码

mysql url –>

jdbc:mysql://localhost:3306/mydb

方法 :

获得预处理对象:prepareStatement(String sql)

执行数据库存储过程:prepareCall(String sql)

3 获得语句执行者

接口:java.sql.Statement 获得方式:createStatement()

方法:

执行DQL(数据查询语言)语句 :ResultSet executeQuery(sql)

,返回值表示结果集,将所有的查询数据都存放到该对象

执行DML(数据操作语句)语句 :int executeUpdate(sql) ,

返回值表示响应的行数

执行sql语句:boolean execute(sql) 如果返回true,表示执行DQL;如果返回false,表示执行的DML 返回结果为true时,通过getResultSet获得结果集

4 处理结果

接口:java.sql.ResultSet

获得方式:Statement.executeQuery(sql) 详解

1.默认情况结果集指向头

2.当执行结果的next()方法,游标将向下移动一行

3.通过getXxx方法获得需要的数据

方法:

getXxx(字段名称),通过指定的字段名称,获得当前记录的字段的值。 getXxx(字段索引),索引从1开始。通过指定的索引,获得指定索引的字段的值。

4.next() 如果指向的记录,返回true,如果指向头或尾,返回false

如果出现中文乱码,在获得链接时,在url中追加参数:?useUnicode=true&characterEncoding=UTF-8

例如:DriverManager.getConnection(“jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=UTF-8”, “root”, “1234”);

sql注入

页面传递的数据,作为了sql语句的一部分。被数据库进行编译。

预处理对象

接口:java.sql.PreparedStatement

获得方式:Connection.preparedStatement(sql) ,提前提供sql语句将实际参数使用?替换预先编译sql语句,在使用实际参数替换回?,实际参数就不会作为sql语句被编译,只作为具体的参数

JDBC 的增上改查:

package com.my.jdbc;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.Statement;

import org.junit.Test;

public class CRUDTest {

@Test

public void save() throws Exception{

Class.forName("com.mysql.jdbc.Driver");

Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "root", "1234");

Statement st = conn.createStatement();

int r = st.executeUpdate("insert into users(id,name,age) values('u004','Joe','15')");

System.out.println(r);

st.close();

conn.close();

}

@Test

public void update() throws Exception{

Class.forName("com.mysql.jdbc.Driver");

Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "root", "1234");

Statement st = conn.createStatement();

int r = st.executeUpdate("update users set age = '21' where id = 'u004' ");

System.out.println(r);

st.close();

conn.close();

}

@Test

public void delete() throws Exception{

Class.forName("com.mysql.jdbc.Driver");

Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "root", "1234");

Statement st = conn.createStatement();

int r = st.executeUpdate("delete from users where id = 'u004'");

System.out.println(r);

st.close();

conn.close();

}

@Test

public void findById() throws Exception{

Class.forName("com.mysql.jdbc.Driver");

Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "root", "1234");

Statement st = conn.createStatement();

ResultSet rs = st.executeQuery("select * from users where id = 'u004'");

//处理结果 -- 通过id查询,没有结果,只有一条记录

if(rs.next()){

String id = rs.getString("id");

String name = rs.getString("name");

int age = rs.getInt("age");

System.out.println(id + " # " + name + " # " + age);

} else {

System.out.println("没有结果");

}

rs.close();

st.close();

conn.close();

}

}

JdbcUtils

将driver, url,username,password基本四项移到配置文件

jdbcinfo.properties:

driver=com.mysql.jdbc.Driver

url=jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=UTF-8

username=root

password=1234

JdbcUtils demo;

package com.my.jdbc;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import java.util.ResourceBundle;

public class JdbcUtils {

private static Connection conn;

static {

try {

// jdbc 基本4项 : driver url user password

ResourceBundle bundle = ResourceBundle.getBundle("jdbcinfo"); // 文件基本名称

String driver = bundle.getString("driver");

String url = bundle.getString("url");

String user = bundle.getString("username");

String password = bundle.getString("password");

// 1 注册驱动

Class.forName(driver);

// 2 获得链接

conn = DriverManager.getConnection(url, user, password);

} catch (Exception e) {

throw new RuntimeException(e.getMessage(), e);

}

}

public static Connection getConnection() {

return conn;

}

public static void closeResource(Connection conn, Statement st, ResultSet rs) {

try {

if (rs != null) {

rs.close();

}

} catch (SQLException e) {

throw new RuntimeException(e.getMessage(), e);

} finally {

try {

if (st != null) {

st.close();

}

} catch (SQLException e) {

throw new RuntimeException(e.getMessage(), e);

} finally {

try {

if (conn != null) {

conn.close();

}

} catch (SQLException e) {

throw new RuntimeException(e.getMessage(), e);

}

}

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值