java jdbc连接和使用详细介绍

发布时间 - 2026-01-10 22:05:39    点击率:

 java jdbc连接和使用

jdbc

导入驱动

//jar是已经打包好的class文件集,可以引用到其他工程中
//Build Path中add external jars导入

连接JDBC

1. 加载驱动

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

创建连接

//导包使用 java.sql.*;
String jdbc="jdbc:mysql://localhost:3306/student?user=root&password=&characterEncoding=utf-8";//student是表名
Connection conn = DriverManager.getConnection(jdbc);

2. 注意 数据库打开之后一定要记得关。

 conn.close();

1. 执行SQL语句 (创建表,插入,删除,更新)

使用Statemant

Statemant st = conn.createStatemant();
 int row = st.executeUpdate(sql语句);//不能做查询操作。

使用PrepareStatement

可以使用?占位符来代替你需要传递的参数

String sql = "insert into " + TABLENAME
+ "(name,subject,score) values(?,?,?)";
PrepareStatement pt = conn.prepareStatement(sql);
 //给每一位占位符设置值,下标从1开始
 pt.setString(1,score.getName());
 pt.setString(2.score.getSubject());
pt.setDouble(3,score.getScore());
 //使用无参的方法
pt.executeUpdate();

1.查询操作

static List<Score> queryScore(Connection pconn, Score pScore)
      throws SQLException {
    ArrayList<Score> mlist = new ArrayList<>();
    String sql = "select * from " + TABLENAME + " where name = ?";
    PreparedStatement ps = pconn.prepareStatement(sql);
    ps.setString(1, pScore.getName());
    ResultSet rs = ps.executeQuery();

    while (rs.next()) {
      // 这里可以通过rs获取所有结果
      String subject = rs.getString("subject");
      int id = rs.getInt("id");
      double score = rs.getDouble("score");
      mlist.add(new Score(id, pScore.getName(), subject, score));
    }
    return mlist;
  }

下面是一个小程序

//建立数据库连接类
public class DAO {

  // 放问数据库的链接地址
  static String jdbc = "jdbc:mysql://localhost:3306/student?user=root&password=&characterEncoding=utf-8";

  // 打开链接
  public static Connection connection() {
    // 使用JDBC的步骤
    // 1. 加载JDBC驱动
    try {
      // 类的全名 包名+类名
      Class.forName("com.mysql.jdbc.Driver");
      // 2. 连接数据库
      Connection conn = DriverManager.getConnection(jdbc);
      return conn;
    } catch (Exception e) {
      System.out.println("驱动加载失败");
      return null;
    }
  }



}


//分数类
public class Score {

  String name;
  String id;
  String subject;
  double score;



  public Score(String name, String subject, double score) {
    super();
    this.name = name;
    this.subject = subject;
    this.score = score;
  }



  @Override
  public String toString() {
    return "Score [name=" + name + ", id=" + id + ", subject=" + subject
        + ", score=" + score + "]";
  }



  public Score(String name, String id, String subject, double score) {
    super();
    this.name = name;
    this.id = id;
    this.subject = subject;
    this.score = score;
  }

  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

  public String getId() {
    return id;
  }

  public void setId(String id) {
    this.id = id;
  }

  public String getSubject() {
    return subject;
  }

  public void setSubject(String subject) {
    this.subject = subject;
  }

  public double getScore() {
    return score;
  }

  public void setScore(double score) {
    this.score = score;
  }

}


//实现类
public class Test {


  public static String TABLENAME = "score";

  public static void main(String[] args) {
    try {
      Connection conn = DAO.connection();
      if (conn != null) {
        System.out.println("链接上了");
        // createTable(conn);
        // 插入一条记录
        // Score score = new Score("李四 ", "Android", 98);
        // System.out.println(addScore2(conn, score));
        // deleteScore(conn, score);
        // updateScore(conn, score);
        List<Score> list = queryScoreByName(conn, "王五"); //queryAllScore(conn);
        for (Score score : list) {
          System.out.println(score);
        }
        conn.close();
      } else {
        System.out.println("链接失败 ");
      }
    } catch (SQLException e) {
      e.printStackTrace();
    }
  }

  // 创建一张表
  public static boolean createTable(Connection conn) {
    // 开始执行sql语句
    String sql = "create table "
        + TABLENAME
        + "(id integer primary key auto_increment,name varchar(3) not null,subject varchar(20) not null,score double)";
    // 要执行一条语句,需要一个执行的类 Statement
    try {
      Statement st = conn.createStatement();
      int result = st.executeUpdate(sql);
      System.out.println(result);
      if (result != -1)
        return true;
    } catch (SQLException e) {
      e.printStackTrace();
    }
    return false;
  }

  // 添加一条记录
  public static boolean addScore(Connection conn, Score score)
      throws SQLException {
    String sql = "insert into " + TABLENAME
        + "(name,subject,score) values('" + score.getName() + "','"
        + score.getSubject() + "'," + score.getScore() + ")";
    System.out.println(sql);
    Statement st = conn.createStatement();
    int row = st.executeUpdate(sql);
    if (row > 0)
      return true;
    return false;
  }

  // 添加一条记录2
  public static boolean addScore2(Connection conn, Score score)
      throws SQLException {
    // 占位符?来代替需要设置的参数
    String sql = "insert into " + TABLENAME
        + "(name,subject,score) values(?,?,?)";
    PreparedStatement ps = conn.prepareStatement(sql);
    // 必须给定?所代表的值
    ps.setString(1, score.getName());
    ps.setString(2, score.getSubject());
    ps.setDouble(3, score.getScore());
    // 调用无参的方法
    int row = ps.executeUpdate();
    if (row > 0)
      return true;
    return false;
  }

  public static boolean deleteScore(Connection conn, Score score)
      throws SQLException {
    String sql = "delete from " + TABLENAME + " where name=? and subject=?";
    // 创建PrepareStatement
    PreparedStatement ps = conn.prepareStatement(sql);
    ps.setString(1, score.getName());
    ps.setString(2, score.getSubject());
    // ps.setDouble(3, score.getScore());
    // 执行
    int row = ps.executeUpdate();
    System.out.println(row);
    if (row > 0)
      return true;
    return false;
  }

  public static boolean updateScore(Connection conn, Score score)
      throws SQLException {
    // 修改 score人他的科目的成绩
    String sql = "update " + TABLENAME
        + " set score=? where name=? and subject=?";
    PreparedStatement ps = conn.prepareStatement(sql);
    ps.setDouble(1, score.getScore());
    ps.setString(2, score.getName());
    ps.setString(3, score.getSubject());
    int row = ps.executeUpdate();
    System.out.println(row);
    if (row > 0)
      return true;
    return false;
  }

  public static List<Score> queryAllScore(Connection conn)
      throws SQLException {
    String sql = "select * from " + TABLENAME;
    // 开始查询
    Statement st = conn.createStatement();
    ResultSet rs = st.executeQuery(sql);
    List<Score> list = new ArrayList<Score>();
    while (rs.next()) {
      // 这里可以通过rs获取所有结果
      String id = rs.getString("id");
      String name = rs.getString("name");
      String subject = rs.getString("subject");
      double score = rs.getDouble("score");
      list.add(new Score(name, id, subject, score));
    }
    // 结束
    return list;
  }

  public static List<Score> queryScoreByName(Connection conn, String name)
      throws SQLException {
    String sql = "select * from " + TABLENAME + " where name=?";
    PreparedStatement pt = conn.prepareStatement(sql);
    pt.setString(1, name);
    ResultSet rs = pt.executeQuery();
    List<Score> list = new ArrayList<>();
    while (rs.next()) {
      String subject = rs.getString("subject");
      String id = rs.getString("id");
      double score = rs.getDouble("score");
      list.add(new Score(name, id, subject, score));
    }
    return list;
  }


# java  # jdbc  # jdbc详解及实例  # jdbc实例代码  # Java多线程编程之使用Exchanger数据交换实例  # Java利用剪贴板实现交换程序间数据的方法  # java常见的字符串操作和日期操作汇总  # 浅谈java中的对象、类、与方法的重载  # Java删除文件、目录及目录下所有文件的方法实例  # Java利用正则表达式提取数据的方法  # Java 定时器(Timer)及线程池里使用定时器实例代码  # java 内部类(匿名类  # 匿名对象  # 静态内部类)详解及实例  # java 线程锁详细介绍及实例代码  # Java 实现汉字转换为拼音的实例  # java 交换两个数据的方法实例详解  # 可以通过  # 加载  # 是一个  # 上了  # 来代替  # 可以使用  # 能做  # 每一位  # 李四  # 连接数据库  # 王五  # 是表名  # createStatemant  # DriverManager  # getConnection  # int  # SQL  # Statemant  # conn  # close 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 佐糖AI抠图怎样调整抠图精度_佐糖AI精度调整与放大细化操作【攻略】  如何在建站宝盒中设置产品搜索功能?  *服务器网站为何频现安全漏洞?  微信小程序 require机制详解及实例代码  Laravel项目结构怎么组织_大型Laravel应用的最佳目录结构实践  Laravel如何使用Contracts(契约)进行编程_Laravel契约接口与依赖反转  Android实现代码画虚线边框背景效果  如何快速上传建站程序避免常见错误?  公司网站制作需要多少钱,找人做公司网站需要多少钱?  MySQL查询结果复制到新表的方法(更新、插入)  重庆市网站制作公司,重庆招聘网站哪个好?  如何快速完成中国万网建站详细流程?  Laravel N+1查询问题如何解决_Eloquent预加载(Eager Loading)优化数据库查询  Laravel如何使用.env文件管理环境变量?(最佳实践)  七夕网站制作视频,七夕大促活动怎么报名?  Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用  如何在Windows服务器上快速搭建网站?  Laravel如何处理JSON字段_Eloquent原生JSON字段类型操作教程  个人网站制作流程图片大全,个人网站如何注销?  如何快速查询网站的真实建站时间?  ai格式如何转html_将AI设计稿转换为HTML页面流程【页面】  如何快速搭建自助建站会员专属系统?  如何为不同团队 ID 动态生成多个非值班状态按钮  WordPress 子目录安装中正确处理脚本路径的完整指南  php中::能调用final静态方法吗_final修饰静态方法调用规则【解答】  高防服务器如何保障网站安全无虞?  Windows10电脑怎么查看硬盘通电时间_Win10使用工具检测磁盘健康  INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】  大连网站制作公司哪家好一点,大连买房网站哪个好?  如何在IIS7中新建站点?详细步骤解析  JavaScript实现Fly Bird小游戏  创业网站制作流程,创业网站可靠吗?  Laravel如何创建自定义中间件?(Middleware代码示例)  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  如何用JavaScript实现文本编辑器_光标和选区怎么处理  Laravel如何实现邮件验证激活账户_Laravel内置MustVerifyEmail接口配置【步骤】  Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程  Laravel软删除怎么实现_Laravel Eloquent SoftDeletes功能使用教程  Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能  Laravel如何与Docker(Sail)协同开发?(环境搭建教程)  如何在云指建站中生成FTP站点?  Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案  Windows家庭版如何开启组策略(gpedit.msc)?(安装方法)  IOS倒计时设置UIButton标题title的抖动问题  Python数据仓库与ETL构建实战_Airflow调度流程详解  Laravel怎么创建自己的包(Package)_Laravel扩展包开发入门到发布  如何快速搭建高效简练网站?  Laravel如何从数据库删除数据_Laravel destroy和delete方法区别  PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)  Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程