数据库编程

JDBC技术

JDBC制定了统一的访问各类关系数据库的标准接口,为各家数据库厂商提供了标准接口的实现。需要注意的是,JDBC并不能直接访问数据库,需要借助于数据库厂商提供的JDBC驱动程序。

JDBC中常用的类和接口

JDBC中提供了丰富的类和接口,用于数据库编程,利用这些类和接口可以方便地进行数据访问和处理。这些类和接口都位于java.sql包中。

DriverManager

DriverManager类用来管理数据库中的所有驱动程序,是JDBC的管理层,作用于用户和驱动程序之间,跟踪可用的驱动程序,并在数据库的驱动程序之间建立连接。DriverManager类中的方法都是静态方法,所以在程序中无须对它进行实例化,直接通过类名就可以调用。

Connection接口

通过DriverManager类的getConnection()方法可以获取Connection实例。Connection接口的常用方法如下:

方法

功能描述

createStatement

创建Statement对象

prepareStatement()

创建预处理对象preparedStatement

Close()

关闭连接

例:该类实现了与MySQL数据库建立连接,连接的数据库名称为db_jxc。

import java.sql.Connection;

import java.sql.DriverManager;

public class Demo{

//创建Connection对象

private Connection con=null;

//数据库驱动路径

private String path="com.mysql.jdbc.Driver";

//指定连接数据库的url

private String url="jdbc:mysql://localhost:3306/db_jxc";

//指定连接数据库的用户名

private String user="root";

//指定连接数据库的密码

private String psword="root";

public Connection getCon(){

try {

Class.forName(path);//加载数据库驱动

//获取数据库连接

Connection con=DriverManager.getConnection(url,user,psword);

if(con!=null)

System.out.println("数据库连接成功");

}catch(Exception e) {

e.printStackTrace();

}

return con;

}

public static void main(String[] args){

Demo demo=new Demo();

demo.getCon();

}

}

Statement接口

Statement实例可以通过Connection实例的createStatement()方法获取。

Statement接口常用方法

方法

功能描述

Execute(String sql)

执行静态select语句,返回多个结果集

executeQuery(String sql)

执行给定的SQL语句,返回单个ResultSet对象

executeUpdate()

该语句可以为INSERT、UPDATE、DELETE语句

Close()

释放Statement实例占用的数据库和JDBC资源

例:查询数据

//import语句省略

public class Demo{

//数据库连接参数省略

public Connection getCon(){

try {

Class.forName(path);//加载数据库驱动

//获取数据库连接

Connection con=DriverManager.getConnection(url,user,psword);

if(con!=null)

System.out.println("数据库连接成功");

String sql="select * from tb_user";

//创建Statement对象

Statement statement=con.createStatement();

//执行SQL语句

ResultSet resultSet=statement.executeQuery(sql);

//遍历结果集

while(resultSet.next()) {

String name=resultSet.getString("username");

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

System.out.println("username="+name);

System.out.println("password="+password);

}

}catch(Exception e) {

e.printStackTrace();

}

return con;

}

public static void main(String[] args){

Demo demo=new Demo();

demo.getCon();

}

}

运行效果:

数据库连接成功

username=admin

password=123456

 

例:添加数据

//import语句省略

public class Demo{

//数据库连接参数省略

public Connection getCon(){

try {

Class.forName(path);//加载数据库驱动

//获取数据库连接

Connection con=DriverManager.getConnection(url,user,psword);

if(con!=null)

System.out.println("数据库连接成功");

//添加数据

String sql="insert into tb_user values(null,'zhangshan',123)";

//创建Statement对象

Statement statement=con.createStatement();

//执行SQL语句

int n=statement.executeUpdate(sql);

System.out.println("数据添加了"+n+"行。");

ResultSet resultSet=statement.executeQuery("select * from tb_user");

//遍历结果集

while(resultSet.next()) {

String name=resultSet.getString("username");

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

System.out.println("username="+name);

System.out.println("password="+password);

}

}catch(Exception e) {

e.printStackTrace();

}

return con;

}

public static void main(String[] args){

Demo demo=new Demo();

demo.getCon();

}

}

 

运行结果:

数据库连接成功

数据添加了1行。

username=admin

password=123456

username=zhangshan

password=123

 

例:修改数据

//import语句省略

public class Demo{

//数据库连接参数省略

public Connection getCon(){

try {

Class.forName(path);//加载数据库驱动

//获取数据库连接

Connection con=DriverManager.getConnection(url,user,psword);

if(con!=null)

System.out.println("数据库连接成功");

//更新数据

String sql="update tb_user set username='lishi' "

+ "where username='zhangshan'";

//创建Statement对象

Statement statement=con.createStatement();

           //执行SQL语句

int n=statement.executeUpdate(sql);

System.out.println("数据修改了"+n+"行。");

ResultSet resultSet=statement.executeQuery("select * from tb_user");

//遍历结果集

while(resultSet.next()) {

String name=resultSet.getString("username");

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

System.out.println("username="+name+",password="+password);

}

}catch(Exception e) {

e.printStackTrace();

}

return con;

}

public static void main(String[] args){

Demo demo=new Demo();

demo.getCon();

}

}

运行结果:

数据修改了1行。

username=admin,password=123456

username=lishi,password=123

PreparedStatement接口

PreparedStatement接口继承Statement接口,用于执行动态的SQL语句。可以通过Connection类的PreparedStatement()方法获取PreparedStatement对象。

PreparedStatement接口的常用方法

方法

功能描述

Execute()

执行任何类型的SQL语句

executeQuery()

执行SQL语句,返回结果集ResultSet

executeUpdate()

该语句必须是INSERT、UPDATE、DELETE

setInt(int pIndex,int x)

将参数位置上设置为给定的int型参数

setString(int pIndex,String str)

将参数位置上设置为给定的String型参数

例子:查询数据

//import语句省略

public class Demo{

   //数据库连接参数省略

public Connection getCon(String username){

try {

Class.forName(path);//加载数据库驱动

//获取数据库连接

Connection con=DriverManager.getConnection(url,user,psword);

if(con!=null)

System.out.println("数据库连接成功");

//定义预编译语句

String sql="select password from tb_user where username=?";

//创建PreparedStatement对象

PreparedStatement statement=con.prepareStatement(sql);

          //设置预编译语句参数

statement.setString(1, username);

          //执行SQL语句

ResultSet resultSet=statement.executeQuery();

//遍历结果集

while(resultSet.next()) {

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

System.out.println("该用户的密码:"+password);

}

}catch(Exception e) {

e.printStackTrace();

}

return con;

}

public static void main(String[] args){

Demo demo=new Demo();

demo.getCon("lishi");

}

}

运行结果:

数据库连接成功

该用户的密码:123

ResultSet接口

ResultSet接口类似于一张数据表,用来暂时存放数据查询操作所获得的结果集。在获取查询结果集时,可通过next()方法将指针向下移。如果存在下一行,该方法返回true,否则返回false。

猜你喜欢

转载自blog.csdn.net/dwenxue/article/details/79062622