java jdbc连接和使用详细介绍

作者:lqh 时间:2023-01-13 18:12:52 

 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
0
投稿

猜你喜欢

  • Java swing读取txt文件实现学生考试系统

    2021-06-13 17:41:02
  • Java操作FreeMarker模板引擎的基本用法示例小结

    2022-01-15 11:34:15
  • jvm crash的崩溃日志详细分析及注意点

    2022-12-18 07:49:00
  • C#仪器数据文件解析Excel文件的方法浅析(xls、xlsx)

    2023-09-18 01:40:57
  • java面向对象设计原则之里氏替换原则示例详解

    2023-02-02 05:04:41
  • java——多线程基础

    2021-08-08 04:14:25
  • C#操作配置文件app.config、web.config增删改

    2022-05-21 01:06:47
  • C#数字图像处理之图像二值化(彩色变黑白)的方法

    2023-03-13 15:07:17
  • InputStream数据结构示例解析

    2022-06-12 20:11:53
  • Java实现将图片上传到webapp路径下 路径获取方式

    2023-07-10 12:44:13
  • Java利用POI实现导入导出Excel表格示例代码

    2023-05-15 03:02:19
  • Mybatis-Plus 条件构造器示例详解

    2023-06-26 06:45:17
  • 对int array进行排序的实例讲解

    2021-12-09 06:51:15
  • C# 文件操作函数 创建文件 判断存在

    2023-08-12 15:14:51
  • SpringMVC之@requestBody的作用及说明

    2022-06-08 12:35:04
  • HashMap的get()方法的NullPointerException问题

    2023-09-23 07:24:12
  • 基于SpringBoot Mock单元测试详解

    2021-09-25 02:49:41
  • 通过C++程序示例理解设计模式中的外观模式

    2022-02-06 19:38:15
  • RestTemplate Get请求实现bean参数传递详解

    2022-03-14 22:20:27
  • Java的MD5工具类和客户端测试类

    2022-04-23 03:08:48
  • asp之家 软件编程 m.aspxhome.com