2021-02-04——JDBC1

本文介绍JDBC的基本概念、核心类及接口,演示了基于Statement接口的数据库增删改查操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JDBC1

  1. JDBC是什么?

JDBC(java database connectivity)Java数据库连接。是Java语言中用来规范客户端程序如何来访问数据库[关系型数据库]的应用程序接口,提供了诸如查询和更新数据库中数据的方法。

我们通常说的JDBC是面向关系型数据库的。

 

  1. JDBC访问数据库需要用到的类、接口、方法?

2.1 java.sqlDriverManager--负责加载各种不同驱动程序(Driver),并根据不同的请求,向调用者返回相应的数据库连接。 驱动程序,会将自身加载到DriverManager中去。

2.1.1数据驱动程序(Driver)--- 根据所连接的数据库不同需要下载对应数据库的驱动程序。

例如:MySQL数据库----https://downloads.mysql.com/archives/c-j/

mysql-connector-java-5.1.38-bin.jar

通过java的反射机制,来给DriverManager,提供被加载的数据库驱动名称。

Class.forName(“数据库驱动名称【包名+类名】”);

数据库驱动名称来自mysql-connector-java-5.1.38-bin.jar中Driver的java类的全名称。

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

2.1.2向调用者返回相应的数据库连接

DriverManager类中的静态方法getConnection(url,username,password)向调用者返回相应的数据库连接

static  Connection   getConnection(url,username,password)

参数url---指定被连接的数据库位置

【jdbc:mysql://数据库服务器IP:端口/数据库名称】

参数username---登陆数据库服务器的用户名

参数password----登陆数据库服务器的密码

2.2 java.sql包Connection接口---数据库连接,负责与进行数据库间通讯,SQL执行以及事务处理都是在某个特定Connection环境中进行的。可以产生用以执行SQL的Statement。

1.产生用以执行SQL的Statement。

    [用以执行SQL查询和更新(针对静态SQL语句和单次执行)]

Statement  createStatement()

select   * from  t_user  where uid=12;[拼接字符串]

2.产生用以执行SQL的PreparedStatement。

        [用以执行包含动态参数的SQL查询和更新(在服务器端编译,允许重复执行以提高效率)]

       PreparedStatement  prepartatement(Sql)

       参数sql---包含动态参数的SQL语句

       select   * from  t_user  where uid=?;【需要给sql动态传递参数值

       ?---占位符

2.3 java.sql包Statement接口---用以执行SQL查询和更新(针对静态SQL语句和单次执行)

        以执行SQL更新【insert / update /delete

        int executeUpdate(SQL)

        参数SQL---[insert / update /delete]字符串类型的sql语句。

        以执行SQL查询【select

         ResultSet    executeQuery(SQL)

      参数SQL---[select]字符串类型的sql语句。

2.4 java.sql包PreparedStatement接口--用以执行包含动态参数的SQL查询和更新(在服务器端编译,允许重复执行以提高效率)

          以执行SQL更新【insert / update /delete】

          int executeUpdate()

          以执行SQL查询【select】

          ResultSet    executeQuery()

          注意:PreparedStatement需要执行的sql语句

  1. sql语句是在创建PreparedStatement对象的时候传入执行,不是在调用executeUpdate()/executeQuery()的时候传入。
  2. PreparedStatement对象所执行的sql语句中有“?【占位符】”

          有一组填补sql语句占位符的方法

           setInt(参数1,参数2)  int--int

           setLong(参数1,参数2)  long---bigint

           setDouble(参数1,参数2) double--double

           setString(参数1,参数2)  String--varchar/char

           .....................

           参数1---SQL语句中“?”的位置【从1开始】

           参数2---SQL语句中“?”具体数据值

 

  2.5.java.sql包ResultSet接口 --- 数据库结果集的数据表,通常通过执行查询数据库的语句生成。

ResultSet 对象具有指向其当前数据行的指针。最初,指针被置于第一行之前。next 方法将指针移动到下一行;因为该方法在 ResultSet 对象中没有下一行时返回 false,所以可以在 while 循环中使用它来迭代结果集。

默认的 ResultSet 对象不可更新,仅有一个向前移动的指针。因此,只能迭代它一次,并且只能按从第一行到最后一行的顺序进行。

 

boolean  next()--将指针移动到下一行;因为该方法在 ResultSet 对象中没有下一行时返回 false。在 while 循环中使用它来迭代结果集。

 由于通过next方法将指针移动到下一行,我们现在就可以取出指针指向的当前行的数据值。要获取当前行中保存的数据值,就需要一列一列的取出数据值,所以ResultSet会有一组获取指定列数据的方法。

getXXXX(int colindex)---int colindex[当前需要获取数据值的列在当前行中的位置【从0开始】]

getXXXX(String colname)--String colname[当前需要获取数据值的列名称]

1 [int]--[id]

Zhangsan  [varchar]--[name]

23 [int]--[age]

2[int]--[id]

Lisi  [varchar]--[name]

24  [int]--[age]

3[int]--[id]

Wangwu  [varchar]--[name]

25  [int]--[age]

通过ResultSet对象得到第一行数据值

int  id=ResultSet对象.getInt(0);

int  id=ResultSet对象.getInt(“id”);

//id==1

String name=ResultSet对象.getString(1);

String name=ResultSet对象.getString(“name”);

//name==zhangsan

int  age=ResultSet对象.getInt(2);

int  age=ResultSet对象.getInt(“age”);

//age==23

3.JDBC访问数据库的流程

 

测试基于Statement接口的数据库访问

1、创建数据库表

create  table t_user(

u_id  int  primary key auto_increment,

u_name varchar(20),

u_age int,

u_address varchar(30)

);

2、创建java项目,导入数据库启动包

3、创建保存用户信息的java类

package com.wangxing.jdbcdemo1.bean;

/**

 * 保存用户信息的java类

 * @author Administrator

 *

 */

public class UserBean {

         private  int  uid;

         private  String uname;

         private  int uage;

         private  String uaddress;

         public int getUid() {

                  return uid;

         }

         public void setUid(int uid) {

                  this.uid = uid;

         }

         public String getUname() {

                  return uname;

         }

         public void setUname(String uname) {

                  this.uname = uname;

         }

         public int getUage() {

                  return uage;

         }

         public void setUage(int uage) {

                  this.uage = uage;

         }

         public String getUaddress() {

                  return uaddress;

         }

         public void setUaddress(String uaddress) {

                  this.uaddress = uaddress;

         }

}

4、创建数据库驱动管理类

package com.wangxing.jdbcdemo1.db;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.SQLException;



/**

 * 数据库驱动管理类--加载数据库启动,得到数据库连接

 * @author Administrator

 *

 */

public class DBConnection {

         //定义数据库表驱动名称

         private static  final String DRIVERNAME="com.mysql.jdbc.Driver";

         //定义数据库的url

         //【jdbc:mysql://数据库服务器IP:端口/数据库名称】

         private static  final String URL="jdbc:mysql://127.0.0.1:3306/test";

         //定义数据库的登陆名

         private static  final String USERNAME="root";

         //定义数据库的登陆密码

         private static  final String PASSWORD="123456";

         //加载数据库驱动

         static{

                  try {

                          Class.forName(DRIVERNAME);

                  } catch (ClassNotFoundException e) {

                          System.out.println("数据库驱动加载失败!");

                          e.printStackTrace();

                  }

         }

         /**

          * 得到数据库连接对象

          */

         public static  Connection getMyConnection(){

                  Connection  conncetion=null;

                  try {

                          conncetion=DriverManager.getConnection(URL, USERNAME, PASSWORD);

                  } catch (SQLException e) {

                          System.out.println("数据库连接获取失败!");

                          e.printStackTrace();

                  }

                  return conncetion;

         }

}

5.创建数据库用户表信息的访问类

package com.wangxing.jdbcdemo1.dao;

import java.sql.Connection;

import java.sql.ResultSet;

import java.sql.Statement;

import java.util.ArrayList;

import java.util.List;

import com.wangxing.jdbcdemo1.bean.UserBean;

import com.wangxing.jdbcdemo1.db.DBConnection;

/**

 * 用户数据库表的访问对象

 *

 * @author Administrator

 *

 */

public class UserDaoObject {

         // 添加用户信息

         public void insertUser(UserBean userBean) {

                  Connection conn = null;

                  Statement statement = null;

                  try {

                          // 得到数据库连接

                          conn = DBConnection.getMyConnection();

                          // 创建添加数据的sql语句

                          String insert = "insert into t_user values(null,'" + userBean.getUname() + "'," + userBean.getUage() + ",'"

                                            + userBean.getUaddress() + "');";

                          System.out.println(insert);

                          // 创建Statement对象

                          statement = conn.createStatement();

                          // 执行添加sql

                          int temp = statement.executeUpdate(insert);

                          if (temp > 0) {

                                   System.out.println("添加信息成功");

                          }

                  } catch (Exception e) {

                          System.out.println("添加信息失败");

                          e.printStackTrace();

                  } finally {

                          if (statement != null && conn != null) {

                                   try {

                                            statement.close();

                                            conn.close();

                                   } catch (Exception e) {

                                            e.printStackTrace();

                                   }

                          }

                  }

         }



         // 根据用户id修改用户信息

         public void updateUser(UserBean userBean) {

                  Connection conn = null;

                  Statement statement = null;

                  try {

                          // 得到数据库连接

                          conn = DBConnection.getMyConnection();

                          // 创建修改数据的sql语句

                          String update = "update t_user set u_name='" + userBean.getUname() + "',u_age=" + userBean.getUage()

                                            + ",u_address='" + userBean.getUaddress() + "' where u_id=" + userBean.getUid() + ";";

                          System.out.println(update);

                          // 创建Statement对象

                          statement = conn.createStatement();

                          // 执行修改sql

                          int temp = statement.executeUpdate(update);

                          if (temp > 0) {

                                   System.out.println("修改信息成功");

                           }

                  } catch (Exception e) {

                          System.out.println("修改信息失败");

                          e.printStackTrace();

                  } finally {

                          if (statement != null && conn != null) {

                                   try {

                                            statement.close();

                                            conn.close();

                                   } catch (Exception e) {

                                            e.printStackTrace();

                                   }

                          }

                  }

         }



         // 根据用户id查询用户信息

         public UserBean selectUserById(int userid) {

                  UserBean  userbean=null;

                  Connection conn = null;

                  Statement statement = null;

                  ResultSet resultSet=null;

                  try {

                          // 得到数据库连接

                          conn = DBConnection.getMyConnection();

                          // 创建根据用户id查询用户信息sql语句

                          String select = "select * from t_user where u_id="+userid+";";

                          System.out.println(select);

                          // 创建Statement对象

                          statement = conn.createStatement();

                          // 执行查询sql

                          resultSet=statement.executeQuery(select);

                          if(resultSet.next()){

                                   int id=resultSet.getInt("u_id");

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

                                   int age=resultSet.getInt("u_age");

                                   String address=resultSet.getString("u_address");

                                   userbean=new UserBean();

                                   userbean.setUid(id);

                                   userbean.setUname(name);

                                   userbean.setUage(age);

                                   userbean.setUaddress(address);

                          }

                  } catch (Exception e) {

                          System.out.println("查询信息失败");

                          e.printStackTrace();

                  } finally {

                          if (resultSet!=null && statement != null && conn != null) {

                                   try {

                                            resultSet.close();

                                            statement.close();

                                            conn.close();

                                   } catch (Exception e) {

                                            e.printStackTrace();

                                   }

                          }

                  }

                  return userbean;

         }



         // 查询所有用户信息

         public List<UserBean> selectUser() {

                  List<UserBean> userlist=new ArrayList<UserBean>();

                  Connection conn = null;

                  Statement statement = null;

                  ResultSet resultSet=null;

                  try {

                          // 得到数据库连接

                          conn = DBConnection.getMyConnection();

                          // 创建查询所有用户信息sql语句

                          String select = "select * from t_user;";

                          System.out.println(select);

                          // 创建Statement对象

                          statement = conn.createStatement();

                          // 执行查询sql

                          resultSet=statement.executeQuery(select);

                          while(resultSet.next()){

                                   int id=resultSet.getInt("u_id");

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

                                   int age=resultSet.getInt("u_age");

                                   String address=resultSet.getString("u_address");

                                   UserBean userbean=new UserBean();

                                   userbean.setUid(id);

                                   userbean.setUname(name);

                                   userbean.setUage(age);

                                   userbean.setUaddress(address);

                                   userlist.add(userbean);

                          }

                  } catch (Exception e) {

                          System.out.println("查询信息失败");

                          e.printStackTrace();

                  } finally {

                          if (resultSet!=null && statement != null && conn != null) {

                                   try {

                                            resultSet.close();

                                            statement.close();

                                            conn.close();

                                   } catch (Exception e) {

                                            e.printStackTrace();

                                   }

                          }

                  }

                  return userlist;

         }



         // 根据id删除用户信息

         public void deleteUserById(int userid) {

                  Connection conn = null;

                  Statement statement = null;

                  try {

                          // 得到数据库连接

                          conn = DBConnection.getMyConnection();

                          // 创建删除数据的sql语句

                          String delete = "delete from t_user where u_id="+userid+";";

                          System.out.println(delete);

                          // 创建Statement对象

                          statement = conn.createStatement();

                          // 执行删除sql

                          int temp = statement.executeUpdate(delete);

                          if (temp > 0) {

                                   System.out.println("删除信息成功");

                          }

                  } catch (Exception e) {

                          System.out.println("删除信息失败");

                          e.printStackTrace();

                  } finally {

                          if (statement != null && conn != null) {

                                   try {

                                            statement.close();

                                            conn.close();

                                   } catch (Exception e) {

                                            e.printStackTrace();

                                   }

                          }

                  }

         }

}

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值