JAVA中JDBC的基础使用

JDBC允许用户访问任何形式的表格数据,尤其是存储在关系数据库中的数据。

JDBC的执行流程如下:

  • 连接数据源,如:数据库;
  • 为数据库传递查询和更新指令(sql)
  • 处理数据库响应并返回的结果(resultset)

一般原生JDBC会将数据库连接封装为一个JdbcUtil,示例如下:

 1 package com.spring.utility;
 2
 3 import java.sql.Connection;
 4 import java.sql.DriverManager;
 5
 6 public class JdbcUtil {
 7     private static String DriverString = "com.mysql.jdbc.Driver";
 8     private static String URL = "jdbc:mysql://localhost:3306/数据库名称";
 9     private static String UserName = 用户名;
10     private static String Password = 密码;
11     public static Connection getConnection(){
12         try{
13             Class.forName(DriverString);
14             Connection cn = DriverManager.getConnection(URL, UserName, Password);
15             return cn;
16         }catch(Exception e){
17             e.printStackTrace();
18         }
19         return null;
20     }
21 }

然后根据MVC框架,一般会在Dao层调用该工具类:

  1 package com.spring.dao.impl;
  2
  3 import java.sql.Connection;
  4 import java.sql.PreparedStatement;
  5 import java.sql.ResultSet;
  6 import java.sql.SQLException;
  7 import java.util.ArrayList;
  8 import java.util.List;
  9
 10 import com.spring.dao.StudentDao;
 11 import com.spring.entity.StudentEntity;
 12 import com.spring.utility.JdbcUtil;
 13
 14 /**
 15  * @author Administrator
 16  *
 17  */
 18 public class StudentDaoImpl implements StudentDao{
 19
 20     @Override
 21     public int insert(StudentEntity st){
 22         Connection cn = JdbcUtil.getConnection();
 23         int result = 0;
 24         String str = "insert into studententity(name,sex) values(?,?)";
 25         try {
 26             PreparedStatement prp = cn.prepareStatement(str);
 27             prp.setString(1, st.getName());
 28             prp.setInt(2, st.getSex());
 29             result = prp.executeUpdate();
 30         } catch (SQLException e) {
 31             e.printStackTrace();
 32         }finally{
 33             try {
 34                 cn.close();
 35             } catch (SQLException e) {
 36                 e.printStackTrace();
 37             }
 38         }
 39
 40         return result;
 41     }
 42
 43     @Override
 44     public int update(StudentEntity st) {
 45         Connection cn = JdbcUtil.getConnection();
 46         int result = 0;
 47         String str = "update studententity set name=?,sex=? where id=?";
 48         try {
 49             PreparedStatement prp = cn.prepareStatement(str);
 50             prp.setString(1, st.getName());
 51             prp.setInt(2, st.getSex());
 52             prp.setInt(3, st.getId());
 53             result = prp.executeUpdate();
 54         } catch (SQLException e) {
 55             e.printStackTrace();
 56         }finally{
 57             try {
 58                 cn.close();
 59             } catch (SQLException e) {
 60                 e.printStackTrace();
 61             }
 62         }
 63         return result;
 64     }
 65
 66     @Override
 67     public List<StudentEntity> query(String st) {
 68         Connection cn = JdbcUtil.getConnection();
 69         String sql = st;
 70         List<StudentEntity> li = new ArrayList<StudentEntity>();
 71         try {
 72             PreparedStatement prp = cn.prepareStatement(sql);
 73             ResultSet rs = prp.executeQuery();
 74             while(rs.next()){
 75                 StudentEntity stu = new StudentEntity();
 76                 stu.setId(rs.getInt("id"));
 77                 stu.setName(rs.getString("name"));
 78                 stu.setSex(rs.getInt("sex"));
 79                 li.add(stu);
 80             }
 81
 82         } catch (SQLException e) {
 83             e.printStackTrace();
 84         }
 85         return li;
 86     }
 87
 88     @Override
 89     public int delete(String st) {
 90         Connection cn = JdbcUtil.getConnection();
 91         String sql = st;
 92         int result=0;
 93         try {
 94             PreparedStatement prp = cn.prepareStatement(sql);
 95             result = prp.executeUpdate();
 96             System.out.println("result="+result);
 97         } catch (SQLException e) {
 98             e.printStackTrace();
 99         }
100         return result;
101     }
102
103 }

做好Dao层后,根据实际需求需要,封装Service层,然后在Controller层调用就好了。

下面是自己容易犯的小错误:

1.insert语句写的还不正确,insert 表(各字段) values(各字段的值)

2.在写insert时,如果数据库主键设置了自增,则在语句中不需要插入该值;(否则报错)

3.查询query,在使用resultset的时候,结果集List<Entity>中List用的是JAVA.util包中的,而不是java.awt包中的

4.需要根据预编译类PreparedStatement的不同方法,判断何种返回值才是执行成功;[这个只是注意点,不是错误点]

原文地址:https://www.cnblogs.com/silence-fire/p/8931086.html

时间: 2024-11-16 10:46:11

JAVA中JDBC的基础使用的相关文章

Java中String的基础知识

Java中String的基础知识 ==与equal的区别 基本数据类型,指的是java中的八种基本数据结构(byte,short,char,int,long,float,double,boolean),一般的比较是使用的 ==,比较的是他们的值. 复合数据类型(类) ==比较的是两个对象的引用,可以理解为在内存中的地址,除非是同一个new出来的对象,他们的 ==为true,否则,都为false. equal是object中的方法.object中的实现如下,内部还是使用==实现,也就是说,如果一个

java中JDBC应用示例实验

一.先下载mysql-connector-java-x.x.x-bin.jar包 下载mysql-connector-java-x.x.x-bin.jar,目前最新版为mysql-connector-java-5.1.22-bin.jar.( 在Eclipse中,选择 项目->属性->Java构建路径,在"库"选项卡中,选择"添加外部JAR",找到下载的mysql-connector-java-5.1.22-bin.jar文件,将其添加进项目. 再次编译

java中的IO基础总结

java中的I/O类库设计可谓是比较丰富的,在我们平时的编程中也经常接触到,往往大部分的系统都有对IO操作的一些封装代码,平时要用到往往翻翻api或者找个写好的方法复制就搞定,由此带来的是对java本身提供的这些方法不熟悉,平时不好好梳理下,对java的io包下面这些常用类也就比较凌乱了.所以这里通过api文档和java.io下面的源码去整理下. 1.表示字节输入输出流的所有类的超类(InputStream/OutputStream) 构造方法:InputStream() 创建一个输入的stre

java中的NIO基础

在jdk1.4中,加入了一个新的包,java.nio.*,这个包引入了新的javaI/O库,目的是为了提高速度,实际上,旧的I/O包也使用nio重新实现过. 相对于io,nio中的这个n代表什么呢?<java编程思想>直接把小标题取名为"新I/O",另一种说法是Non-blocking的首字母,不管怎样,nio也确实是一种新的处理非阻塞的IO. NIO的几个核心组成部分:Chennels(通道),Buffers(缓存),Selectors(选择器). 我们可以把通道(Cha

Java中的IO基础学习小记之一

IO流用来处理设备间的数据传送 Java对数据的操作是通过流的方式进行的 Java用于操作流的对象都在io包中 数据按照操作数据的方式分为两种:字节流和字符流 流按照流向分为:输入流和输出流 硬盘存储的数据时间长,断电后仍然存在 内存存数的数据时间短,断电后不存在. 硬盘读写数据慢,内存读取数据快 Java中IO的输入和输出是相对于内存的 从硬盘向内存中写数据,称为输入 从内存向硬盘中写数据,称为输出 外围设备包括  打印机,硬盘,U盘等 在计算机中,所有的数据都是按照二进制的形式存储的. 用于

Java中的NIO基础知识

上一篇介绍了五种NIO模型,本篇将介绍Java中的NIO类库,为学习netty做好铺垫 Java NIO 由3个核心组成,分别是Channels,Buffers,Selectors.本文主要介绍着三个部分. Channel 所有的I/O都从一个Channel开始.通道与流不同,通道是双向的,流是单向的. 即可以从通道中读取数据,也可以写数据到通道里 . 读的话,是从通道读取数据到缓冲区,写的话是从缓冲区写入数据到通道. 四种通道: FileChannel.从文件中读写数据 DatagramCha

Java中JDBC连接数据库(MySQL)

 JDBC连接数据库步骤. 一个简单详细的查询数据的例子. 封装连接数据库,释放数据库连接方法. 实现查询,插入,删除,更新等十一个处理数据库信息的功能.(包括事务处理,批量更新等) 把十一个功能都放在一起. 安装下载的数据库驱动程序jar包,不同的数据库需要不同的驱动程序(这本该是第一步,但是由于属于安装类,所以我们放在最后) 一.JDBC连接数据库(编辑)步骤(主要有六个步骤).  1.注册驱动: Class.forName("com.mysql.jdbc.Driver");显示的

Java中浮点数的基础知识

偶然查看Math.round的JDK 1 public static int round(float a) { 2 if (a != 0x1.fffffep-2f) // greatest float value less than 0.5 3 return (int)floor(a + 0.5f); 4 else 5 return 0; 6 } 注释说0x1.fffffep-2f是最接近0.5的float类型的小数,咦,科学计数法用e表示指数我是知道的,但是这个p是什么鬼.可能有的读者还会问,

Java中JDBC连接数据库代码和步骤详解总结

JDBC连接数据库 ?创建一个以JDBC连接数据库的程序,包含7个步骤:         1.加载JDBC驱动程序:         在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机),这通过java.lang.Class类的静态方法forName(String className)实现.    例如: try{ //加载MySql的驱动类 Class.forName("com.mysql.jdbc.Driver") ; }catch(ClassNotFoun