电玩城打鱼捕鱼-专业24小时上下分

JDBC学习笔记,使用JDBC连接数据库

六月 6th, 2019  |  电玩城上下分数据库

使用JDBC连接数据库,jdbc连接数据库

JDBC(Java Data Base
Connectivity)数据库连接,我们在编写web应用或java应用程序要连接数据库时就要使用JDBC。使用JDBC连接数据库一般步骤有:

1、加载驱动程序 Class.forName(driver);

2、创建连接对象 Connection con
= DriverManager.getConnection(url,username,password);

3、创建sql语句执行对象 

4、执行sql语句

5、对执行结果进行处理

6、关闭相关的连接对象(顺序跟声明的顺序相反)

下面是以建立与MySQL数据库连接的例子,其他数据库的过程类似

 

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class DBConnection
{

public static void main(String[] args)
{
String driver = “com.mysql.jdbc.Driver”;

//localhost指本机,也可以用本地ip地址代替,3306为MySQL数据库的默认端口号,“user”为要连接的数据库名
String url = “jdbc:mysql://localhost:3306/user”;

//填入数据库的用户名跟密码
String username = “test”;
String password = “test”;
String sql = “select * from
user”;//编写要执行的sql语句,此处为从user表中查询所有用户的信息

try
{
Class.forName(driver);//加载驱动程序,此处运用隐式注册驱动程序的方法

}
catch(ClassNotFoundException e)
{
e.printStackTrace();
}
try
{
Connection con =
DriverManager.getConnection(url,username,password);//创建连接对象
Statement st = con.createStatement();//创建sql执行对象
ResultSet rs = st.executeQuery(sql);//执行sql语句并返回结果集

while(rs.next())//对结果集进行遍历输出
{

System.out.println(“username:
“+rs.getString(1));//通过列的标号来获得数据
System.out.println(“useradd:
“+rs.getString(“useradd”));//通过列名来获得数据
System.out.println(“userage: “+rs.getInt(“userage”));
}
//关闭相关的对象
if(rs != null)
{
try
{
rs.close();
}
catch(SQLException e)
{
e.printStackTrace();
}
}

if(st != null)
{
try
{
st.close();
}
catch(SQLException e)
{

e.printStackTrace();
}
}

if(con !=null)
{

try
{

con.close();
}
catch(SQLException e)
{
e.printStackTrace();
}
}
}
catch(SQLException e)
{
e.printStackTrace();
}

}

}

 

本文内容

import java.beans.Statement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;

java中使用JDBC连接数据库的步骤?

1.注册驱动
Class.forname(“com.mysql.jdbc.Driver”);//这是连接mysql数据库的驱动
2.获取数据库连接
java.sql.Connection conn=java.sql.DriverManager.getConnection();
3.获取表达式
java.sql.Statement
stmt=conn.createStatement(“jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=GBK”,”root”,”null”);//三个参数分别是数据库连接的URL,用户名,密码
4.执行SQL
java.sql.ResultSet rs=stmt.executeQuery(“select * from user”);
5.显示结果集里面的数据
while(rs.next()){
System.out.println(rs.getInt(1));
System.out.println(rs.getString(“username”));
System.out.println(rs.getString(“password”));
System.out.pringln();
}//执行插入语句
//stmt.executeUpdate(“insert into user values(1,’中文’,’345′)”);
6.释放资源
rs.close();
stmt.close();
conn.close();
 

1.什么是JDBC以及为什么要使用JDBC

import com.mysql.jdbc.Driver;

java中使用JDBC连接数据库的步骤?

1.注册驱动
Class.forname(“com.mysql.jdbc.Driver”);//这是连接mysql数据库的驱动
2.获取数据库连接
java.sql.Connection conn=java.sql.DriverManager.getConnection();
3.获取表达式
java.sql.Statement
stmt=conn.createStatement(“jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=GBK”,”root”,”null”);//三个参数分别是数据库连接的URL,用户名,密码
4.执行SQL
java.sql.ResultSet rs=stmt.executeQuery(“select * from user”);
5.显示结果集里面的数据
while(rs.next()){
System.out.println(rs.getInt(1));
System.out.println(rs.getString(“username”));
System.out.println(rs.getString(“password”));
System.out.pringln();
}//执行插入语句
//stmt.executeUpdate(“insert into user values(1,’中文’,’345′)”);
6.释放资源
rs.close();
stmt.close();
conn.close();
 

JDBC(Java Data
Base
Connectivity)数据库连接,我们在编写web应用或java应用程序要连接数据库时就要使用JDBC。…

2.JDBC核心API的讲解

public class Base {
public static void main(String[] args) throws SQLException {
//数据库连接对象
Connection conn = null;
//数据库操作对象
java.sql.Statement stmt = null;
//结果集
ResultSet rs = null;

3.使用JDBC核心API进行CRUD操作

    //1.注册驱动
    Driver driver = new com.mysql.jdbc.Driver();
    DriverManager.registerDriver(driver);
    //2.获取数据库连接
    String url = "jdbc:mysql://localhost:3306/hellosele";
    String user = "root";
    String passwd = "123456";
    conn = DriverManager.getConnection(url,user,passwd);
    //3.获取数据库操作对象
    stmt =conn.createStatement();
    //4.执行SQL语句:DQL语句
    String sql = "select * from student";
    rs = stmt.executeQuery(sql);
    //5.处理查询结果集
    while(rs.next()){
        String sno = rs.getString("sno");
        String sname = rs.getString("sname");
        String major = rs.getString("major");
        System.out.println(sno+"\t"+sname+"\t"+major);

    }
    rs.close();
    stmt.close();
    conn.close();
}

4.JDBC的工具类的抽取与改进

}

5.JDBC的SQL注入漏洞分析与解决方案

注册驱动的第二种方式:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;

6.使用JDBC的PreparedStatement预编译对象进行CRUD操作(重点)

import com.mysql.jdbc.Driver;
import com.mysql.jdbc.Statement;

7.JDBC的批处理操作

public class Base {
public static void main(String[] args) throws SQLException {
Connection conn = null;
java.sql.Statement stmt = null;
ResultSet rs = null;
try {
// 1.第二种注册驱动:利用java的反射机制
Class.forName(“cn.dasyou.jdbctest.RegisterDriver”);
//1.第三种注册驱动:SUN公司自带
Class.forName(“com.mysql.jdbc.Driver”);
// 2.获取数据库连接
String url =
“jdbc:mysql://127.0.0.1:3306/hellosele”;
String user = “root”;
String passwd = “123456”;
conn = DriverManager.getConnection(url, user, passwd);
// 3.获取数据库操作对象
stmt = conn.createStatement();
// 4.执行SQL语句
String sql = “select * from student”;
rs = stmt.executeQuery(sql);
//处理查询结果集
while(rs.next())
{
String sno = rs.getString(“sno”);
String sname = rs.getString(“sname”);
String major = rs.getString(“major”);
System.out.println( sno+ ” ” + sname + ” ” + major);
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
//关闭资源
if(rs != null)
{
rs.close();
}
if(stmt != null)
{
stmt.close();
}
if(conn != null)
{
conn.close();
}
}

使用JDBC的预编译对象进行CRUD操作(重点)

}

[if !supportLists]1.1 [endif]1.JDBC的概述

}

JDBC:(Java DataBase Connectivity Java数据库连接).

/**

*是一种用于执行SQL语句的Java
的API.可以为多种关系型数据库提供统一的访问.它是由一组使用Java语言编写的类或接口组成.

– 注册驱动

*/
class RegisterDriver {
static {
try {
System.out.println(“sss”);
Driver driver = new com.mysql.jdbc.Driver();
DriverManager.registerDriver(driver);
} catch (SQLException e) {
e.printStackTrace();
}

}

}

简说:用java语言编写的一组用于访问关系型数据库的接口和类.

作用:使用Java语言连接到数据库

驱动:两个设备之间的通信桥梁.

Java语言要连接数据库必须使用数据库的驱动

本质:

SUN公司提供了一组接口,各个数据库生产商提供了这套接口的实现.(这组规范就是JDBC规范.)

[if !supportLists]1.2 [endif]02_JDBC的入门(写)

先解释下,再写

设置工作空间的编码为utf-8

SQL脚本:

create database web_test3;

use web_test3;

create table user(

id int primary key auto_increment,

username varchar(20),

password varchar(20),

nickname varchar(20),

age int

);

insert into user values (null,’aaa’,’123′,’小丽’,34);

insert into user values (null,’bbb’,’123′,’大王’,32);

insert into user values (null,’ccc’,’123′,’小明’,28);

insert into user values (null,’ddd’,’123′,’大黄’,21);

引入数据库的驱动.

注意:复制驱动包过来后,一定要选中, add to Build Path

1.加载驱动.

2.获得连接.

获得语句(Statement )对象

3.执行SQL

4.释放资源.

public class JDBCDemo1 {

@Test

/**

* JDBC的入门

 */

public void demo1() throws Exception{

// 1.加载驱动

Class.forName(“com.mysql.jdbc.Driver”);

// 2.获得连接

Connection conn =
DriverManager.getConnection(“jdbc:mysql://localhost:3306/web_test3”,
“root”, “abc”); //注意:密码改成你的密码

// 3.基本操作:执行SQL

// 3.1获得执行SQL语句的对象

Statement statement = conn.createStatement();

// 3.2编写SQL语句:

String sql = “select * from user”;

// 3.3执行SQL:

ResultSet rs = statement.executeQuery(sql);

// 3.4遍历结果集:

while(rs.next()){

System.out.print(rs.getInt(“id”)+” “);

System.out.print(rs.getString(“username”)+” “);

System.out.print(rs.getString(“password”)+” “);

System.out.print(rs.getString(“nickname”)+” “);

System.out.print(rs.getInt(“age”));

System.out.println();

}

// 4.释放资源

rs.close();

statement.close();

conn.close();

}

}

[if !supportLists]1.3 [endif]03_DriverManager的介绍

问题:

DriverManager对象有什么作用?

Ø为什么没有使用registerDriver()注册驱动?

Ø获取连接的url路径的含义?

1.DriverManager对象两个作用:①、注册驱动和②、获取连接;

2.为什么使用没有使用registerDriver注册驱动?

DriverManager类:

原来这样写:

DriverManager.registerDriver(new com.mysql.jdbc.Driver());

com.mysql.jdbc.Driver源码:

现在这样写:

Class.forName(“com.mysql.jdbc.Driver”);//强制加载class到内存

结论:直接调用registerDriver方法会导致驱动加载2次.

[if !supportLists]3.[endif]获取连接的url路径的含义?

[if !supportLists]1.4 [endif]04_Connection的介绍

[if !supportLists]Ø [endif]Connection对象有哪些作用?

有两个作用:①、创建执行SQL的Statement(语句)对象;②、管理事务

作用一、创建执行sql语句的对象:

作用二:管理事务

总结:

[if !supportLists]1.[endif]Connection对象的作用?

获取语句对象

Statement

 CallableStatement(后面Oracle说)

 PreparedStatement

管理事务

setAutoCommit(false);//手动开启事务

commit()

rollback();

[if !supportLists]1.5 [endif]05_Statement的介绍

[if !supportLists]Ø [endif]Statement对象有哪些作用?

有两个作用:①、执行sql语句;②、进行批处理

作用一:执行sql语句

作用二:进行批处理:就是把几条sql语句添加到Statement对象命令列表中,一次性执行多条sql语句。

[if !supportLists]1.6 [endif]06_ResultSet的介绍

ResultSet代表select查询后的结果集

方法:

*向下移动光标.

*获得结果集中整形数据.

*获得结果集中字符串类型的数据:

遍历结果集:

* while(rs.next()){

int id = rs.getInt(“id”);

String username = rs.getString(“username”);

String password = rs.getString(“password”);

System.out.println(id+”    “+username+”    “+password);

}

获得结果集中的数据:

* int id = rs.getInt(“id”);

String username = rs.getString(“username”);

String password = rs.getString(“password”);

如果结果集中只有一条记录:

* if(rs.next()){

}

原理:

总结:

   1. Result rs = statement.executeQuery(“select * from user”);

   2.while(rs.next()) {

       rs.getInt(“id”);

rs.getString(“username”);

rs.getObject(“password”);

rs.getInt(4);

}

[if !supportLists]1.7 [endif]07_JDBC的资源的释放

Connection的使用原则:尽量要晚创建,尽量早释放!!!

try{

..

}catch(){…}

finally {….}

要掌握,看看代码,晚上写

[if
!supportLists]Ø [endif]掌握释放资源的标准代码:一般把释放资源的代码放到finally里面去执行

finally {

//5、方法资源

if (resultSet!=null) {

try {

resultSet.close();

} catch (SQLException e) {

e.printStackTrace();

}

resultSet=null;

}

if (statement!=null) {

try {

statement.close();

} catch (SQLException e) {

e.printStackTrace();

}

statement=null;

}

if (conn!=null) {

try {

conn.close();

} catch (SQLException e) {

e.printStackTrace();

}

conn=null;

}

}

1、为什么对象调用了close()方法以后还要把对象手动赋值为null?

资源释放的一段标准代码:

// 4.释放资源.

if (rs != null) {

try {

rs.close();

} catch (SQLException e) {

e.printStackTrace();

}

rs = null; // 为了让JVM垃圾回收更早回收该对象.

}

if (stmt != null) {

try {

stmt.close();

} catch (SQLException e) {

e.printStackTrace();

}

stmt = null;

}

if (conn != null) {

try {

conn.close();

} catch (SQLException e) {

e.printStackTrace();

}

conn = null;

}

总结:

try {

//加载驱动

//获取连接

//创建statement

//执行SQL

//遍历结果集

}catch(Exception ex) {

}finally {

//释放资源

rs,stat,conn

if (rs!=null) {

try {

rs.close();

}catch() {}

rs = null;

}

}

[if !supportLists]1.8 [endif]08_JDBC的CRUD操作之保存(写)

思路:

加载驱动

获得连接

获得Statement对象,执行SQL

释放资源

@Test

/**

*保存操作的代码实现

 */

public void demo1(){

Connection conn = null;

Statement stmt = null;

try{

//注册驱动:

Class.forName(“com.mysql.jdbc.Driver”);

//获得连接:

conn = DriverManager.getConnection(“jdbc:mysql:///web_test3”, “root”,
“abc”);

//执行操作:

//创建执行SQL语句对象:

stmt = conn.createStatement();

//编写SQL语句:

String sql = “insert into user values (null,’eee’,’123′,’阿黄’,21)”;

//执行SQL语句:

int num = stmt.executeUpdate(sql);

if(num > 0){

System.out.println(“保存用户成功!!!”);

}

}catch(Exception e){

e.printStackTrace();

}finally{

//资源释放:

if(stmt != null){

try {

stmt.close();

} catch (SQLException e) {

e.printStackTrace();

}

stmt = null;

}

if(conn != null){

try {

conn.close();

} catch (SQLException e) {

e.printStackTrace();

}

标签:, ,

Your Comments

近期评论

    功能


    网站地图xml地图