zoukankan      html  css  js  c++  java
  • 使用JDBC操作MySQL数据库

    一、JDBC简介

       JDBC(Java DataBase Connectivity)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一的访问,它由一组用Java语言编写的类和接口组成。使用JDBC访问数据库的基本步骤如下:

        1、加载JDBC驱动程序

        2、建立数据库连接

        3、创建操作数据库SQL的对象

        4、执行语句并分析执行结果

        5、关闭连接

      在使用JDBC操作数据库之前,我们需要先向项目中加入JDBC驱动文件,将其放到项目中的lib文件夹下即可。

      放入JDBC驱动文件(下)后,eclipse会自动将其加载到项目中(上)。

    二、使用JDBC访问MySQL数据库

      我们在MySQL数据库中建立了test库,test库中含有test表,表中的数据如下:

    1、通过Statement对象执行静态SQL语句

     1 package test;
     2 
     3 import java.sql.*;                                        //导入Java提供的数据库操作包
     4 
     5 public class MySql {
     6     public static void main(String[] args) {
     7 
     8         String url = "jdbc:mysql://localhost:3306/test?serverTimezone=Asia/Shanghai";  //数据库连接地址,此处表示连接本机3306端口的MySQL数据库里的test库,使用上海时区
     9         Connection con;
    10         Statement statement;
    11         ResultSet rs;
    12         int i;
    13         String string;
    14             
    15         try {
    16             Class.forName("com.mysql.cj.jdbc.Driver");                 //加载JDBC驱动程序
    17             con = DriverManager.getConnection(url, "root", "root");         //建立与数据库的连接,后两个参数分别为账号和密码
    18             statement = con.createStatement();                     //创建Statement对象
    19                 
    20             rs = statement.executeQuery("select * from test");            //执行sql查询语句,返回结果集
    21             System.out.println("查询结果为:");
    22             while(rs.next()) {                               //循环操作结果集
    23                 string = rs.getString("id") + "——" + rs.getString("name");
    24                 System.out.println(string);
    25             }
    26                 
    27             i = statement.executeUpdate("insert into test value(4,'wxc')");    //执行sql更新语句,返回影响行数
    28             System.out.println("影响行数为:" + i);
    29                 
    30             rs.close();                                   //关闭结果集
    31             statement.close();                               //关闭Statement对象
    32             con.close();                                  //关闭与数据库的连接
    33         } catch (Exception e) {
    34             e.printStackTrace();
    35         }
    36     }
    37 }

      执行结果如下:

    2、通过PreparedStatement对象执行预编译SQL语句

     1 public class MySql {                                    //大部分操作与执行静态SQL语句类似,相同部分此处不再赘述
     3     public static void main(String[] args) {
     4 
     5         String url = "jdbc:mysql://localhost:3306/test?serverTimezone=Asia/Shanghai";
     6         Connection con;
     7         String sql;
     8         PreparedStatement preparedStatement;
     9         ResultSet rs;
    10         int i;
    11         String string;
    12             
    13         try {
    14             Class.forName("com.mysql.cj.jdbc.Driver");
    15             con = DriverManager.getConnection(url, "root", "root");
    16                 
    17             sql = "select * from test where id = ?";              //编写sql查询语句,问号为占位符,之后会被参数取代
    18             preparedStatement = con.prepareStatement(sql);          //创建PreparedStatement对象
    19             preparedStatement.setString(1, "3");                //设置参数,第一个参数表示选择第几个占位符,第二个参数表示要输入的值
    20             rs = preparedStatement.executeQuery();
    21             System.out.println("查询结果为:");
    22             if(rs.next()) {
    23                 string = rs.getString("id") + "——" + rs.getString("name");
    24                 System.out.println(string);
    25             }
    26                 
    27             sql = "delete from test where id = ?";
    28             preparedStatement = con.prepareStatement(sql);
    29             preparedStatement.setString(1, "3");
    30             i = preparedStatement.executeUpdate();
    31             System.out.println("影响行数为:" + i);
    32                 
    33             rs.close();
    34             preparedStatement.close();
    35             con.close();
    36         } catch (Exception e) {
    37             e.printStackTrace();
    38         }
    39     }
    40 }

      执行结果如下:

  • 相关阅读:
    JavaScript单线程和浏览器事件循环简述
    Promise的前世今生和妙用技巧
    自定义Angular插件
    smartcrop.js智能图片裁剪库
    判断是否安装微博
    Java 注解
    android tools使用方式
    listview复用机制研究
    java 驼峰字符和下划线字符相互转换工具类
    剪切板(复制、粘贴)工具类
  • 原文地址:https://www.cnblogs.com/ysyasd/p/10786474.html
Copyright © 2011-2022 走看看