通过JDBC进行简单的增删改查

合集下载

数据库简单的增删改查语法总结

数据库简单的增删改查语法总结

数据库简单的增删改查语法总结数据库是指在计算机系统中长期储存的、有组织的、可共享的大量数据的集合。

在数据库中,常用的操作有增加、删除、修改和查询等。

以下是数据库简单的增删改查语法总结:一、增加数据在数据库中,增加数据的操作可以使用INSERT语句。

INSERT语句的基本格式如下:INSERTINTO表名(字段1,字段2,...)VALUES(值1,值2,...);例如,向一个学生表student中增加一条记录,可以使用以下语句:INSERT INTO student (id, name, age)VALUES('1','张三','20');这条语句将向student表中插入一条id为1,name为"张三",age为20的记录。

二、删除数据在数据库中,删除数据的操作可以使用DELETE语句。

DELETE语句的基本格式如下:DELETEFROM表名WHERE条件;例如,从学生表student中删除id为1的记录,可以使用以下语句:DELETE FROM student WHERE id = '1';这条语句将从student表中删除id为1的记录。

三、修改数据在数据库中,修改数据的操作可以使用UPDATE语句。

UPDATE语句的基本格式如下:UPDATE表名SET字段1=新值1,字段2=新值2,...WHERE条件;例如,将学生表student中id为1的记录的name字段修改为"李四",可以使用以下语句:UPDATE student SET name = '李四' WHERE id = '1';这条语句将修改student表中id为1的记录的name字段为"李四"。

四、查询数据在数据库中,查询数据的操作可以使用SELECT语句。

SELECT语句的基本格式如下:SELECT字段1,字段2,...FROM表名WHERE条件;例如,查询学生表student中所有记录的id和name字段,可以使用以下语句:SELECT id, name FROM student;这条语句将查询student表中所有记录的id和name字段。

jdbctemplate增删改查语句

jdbctemplate增删改查语句

jdbctemplate增删改查语句【原创实用版】目录1.JDBC 概述2.JDBC 模板的作用3.增删改查语句的实现4.总结正文一、JDBC 概述JDBC,即 Java Database Connectivity,是 Java 语言中用于连接和操作数据库的一种技术标准。

它提供了一组用于访问关系型数据库的接口,可以使Java 程序员在不关心具体数据库类型的情况下,实现对数据库的操作。

JDBC 将Java 程序与数据库隔离,降低了程序与数据库的耦合度,方便了程序的开发和维护。

二、JDBC 模板的作用在实际开发中,我们通常会使用 JDBC 模板来简化 JDBC 操作。

JDBC 模板是一种封装了 JDBC 操作的代码模板,它将常用的 JDBC 操作进行了抽象,提供了简单易用的接口。

使用 JDBC 模板可以减少重复代码,提高开发效率,降低出错概率。

三、增删改查语句的实现1.查询语句查询语句是数据库操作中最常见的一种,它用于从数据库中检索数据。

JDBC 模板中的查询语句通常使用`Query`接口实现。

以下是一个简单的查询语句示例:```javaString sql = "SELECT * FROM user";Query query = db.createQuery(sql);List<Map<String, Object>> result = query.list();```2.插入语句插入语句用于将数据插入到数据库中。

JDBC 模板中的插入语句通常使用`Insert`接口实现。

以下是一个简单的插入语句示例:```javaString sql = "INSERT INTO user (username, password) VALUES(#{username}, #{password})";Insert insert = db.createInsert(sql);insert.setString("username", "test");insert.setString("password", "123456");int rows = insert.execute();```3.更新语句更新语句用于修改数据库中的数据。

javaJDBC教学设计

javaJDBC教学设计

Java JDBC教学设计一、引言JDBC(Java Database Connectivity)是Java语言对数据库访问的一种标准接口。

它提供了一套方法和类,用于连接和操作各种关系型数据库。

本文将介绍如何设计一套完整的Java JDBC教学计划,帮助学生掌握JDBC的基本概念和使用方法。

二、教学目标1. 理解JDBC的基本原理和核心概念。

2. 掌握使用JDBC连接数据库的方法。

3. 学会执行SQL语句和处理数据库查询结果。

4. 实践使用JDBC进行增删改查操作。

5. 掌握事务处理和批量操作的使用方法。

三、教学内容1. JDBC基础知识1.1 JDBC概述:介绍JDBC的定义、特点和作用。

1.2 JDBC架构:介绍JDBC的体系结构和主要组件。

1.3 JDBC驱动类型:介绍JDBC的四种驱动类型及其特点。

1.4 JDBC连接过程:详细解释JDBC连接数据库的步骤和方法。

2. JDBC连接数据库2.1 加载JDBC驱动程序:介绍如何加载数据库驱动程序。

2.2 连接数据库:详细描述如何建立与数据库的连接。

2.3 关闭数据库连接:讲解如何正确关闭数据库连接。

3. 执行SQL语句3.1 创建Statement对象:介绍如何创建和使用Statement 对象。

3.2 执行SQL语句:示范如何执行各种类型的SQL语句(查询、插入、更新、删除)。

3.3 批量更新:讲解如何使用JDBC进行批量更新操作。

4. 处理查询结果4.1 ResultSet对象:介绍ResultSet接口的方法和使用。

4.2 遍历查询结果:演示如何遍历和处理查询结果。

4.3 关闭ResultSet和Statement对象:说明正确关闭ResultSet和Statement对象的方法。

5. 事务处理5.1 事务概述:介绍事务的定义、特点和使用场景。

5.2 事务处理方法:讲解如何使用JDBC进行事务处理。

5.3 事务回滚和提交:示范如何进行事务回滚和提交操作。

jsp+servlet+jdbc实现对数据库的增删改查

jsp+servlet+jdbc实现对数据库的增删改查

jsp+servlet+jdbc实现对数据库的增删改查⼀、JSP和Servlet的简单介绍1、Servlet和JSP简介:Java开发Web应⽤程序时⽤到的技术主要有两种,即Servlet和JSP,Servlet是在服务器端执⾏的Java程序,⼀个被称为Servlet容器的程序(其实就是服务器)负责执⾏Java程序,⽽JSP(Java Server Page)则是⼀个页⾯,由JSP容器负责执⾏.2、Servlet和JSP的区别:Servlet以Java程序为主,输出HTML代码时需要使⽤out.println函数,也就是说Java中内嵌HTML;⽽JSP则以HTML页⾯为主,需要写Java代码时则在页⾯中直接插⼊Java代码,即HTML中内嵌Java.3、MVC模型MVC模型就是将数据、逻辑处理、⽤户界⾯分离的⼀种⽅法1)、M(Model, 模型):⽤于数据处理、逻辑处理2)、V(View,视图):⽤于显⽰⽤户界⾯3)、C(Controller,控制器):根据客户端的请求控制逻辑⾛向和画⾯⽽在Java中,MVC这三个部分则分别对应于 JavaBeans、JSP和Servlet1)、M = JavaBeans:⽤于传递数据,拥有与数据相关的逻辑处理2)、V = JSP:从Model接收数据并⽣成HTML3)、C = Servlet:接收HTTP请求并控制Model和View4、jdbc连接,可参考⽂章:⼆、代码演⽰,实现了book的添加删除和修改功能1、环境的配置myeclipse+tomcat+MySQL2、Book中bean类package example.bean.book;public class Book {// 编号private int id;// 图书名称private String name;// 价格private double price;// 数量private int bookCount;// 作者private String author;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) { = name;}public double getPrice() {return price;}public void setPrice(double price) {this.price = price;}public int getBookCount() {return bookCount;}public void setBookCount(int bookCount) {this.bookCount = bookCount;}public String getAuthor() {return author;}public void setAuthor(String author) {this.author = author;}}3、Servlet类1)、FindServlet.javapackage example.servlet.book;import java.io.IOException;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.Statement;import java.util.ArrayList;import java.util.List;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import example.bean.book.Book;/*** Servlet implementation class FindServlet*/public class FindServlet extends HttpServlet {private static final long serialVersionUID = 1L;/*** @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse* response)*/protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {try {// 加载数据库驱动,注册到驱动管理器Class.forName("com.mysql.jdbc.Driver");// 数据库连接字符串String url = "jdbc:mysql://localhost:3306/db_book?useUnicode=true&characterEncoding=utf-8"; // 数据库⽤户名String username = "root";// 数据库密码String password = "";// 创建Connection连接Connection conn = DriverManager.getConnection(url, username,password);// 添加图书信息的SQL语句String sql = "select * from tb_books";// 获取StatementStatement statement = conn.createStatement();ResultSet resultSet = statement.executeQuery(sql);List<Book> list = new ArrayList<Book>();while (resultSet.next()) {Book book = new Book();book.setId(resultSet.getInt("id"));book.setName(resultSet.getString("name"));book.setPrice(resultSet.getDouble("price"));book.setBookCount(resultSet.getInt("bookCount"));book.setAuthor(resultSet.getString("author"));list.add(book);}request.setAttribute("list", list);resultSet.close();statement.close();conn.close();} catch (Exception e) {e.printStackTrace();}request.getRequestDispatcher("book_list.jsp").forward(request, response);}/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse* response)*/protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubdoGet(request, response);}}2)、UpdateServlet.java类package example.servlet.book;import java.io.IOException;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/*** Servlet implementation class UpdateServlet*/public class UpdateServlet extends HttpServlet {private static final long serialVersionUID = 1L;/*** @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse* response)*/protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {int id = Integer.valueOf(request.getParameter("id"));int bookCount = Integer.valueOf(request.getParameter("bookCount"));try {// 加载数据库驱动,注册到驱动管理器Class.forName("com.mysql.jdbc.Driver");// 数据库连接字符串String url = "jdbc:mysql://localhost:3306/db_book";// 数据库⽤户名String username = "root";// 数据库密码String password = "";// 创建Connection连接Connection conn = DriverManager.getConnection(url, username,password);// 更新SQL语句String sql = "update tb_books set bookcount=? where id=?";// 获取PreparedStatementPreparedStatement ps = conn.prepareStatement(sql);// 对SQL语句中的第⼀个参数赋值ps.setInt(1, bookCount);// 对SQL语句中的第⼆个参数赋值ps.setInt(2, id);// 执⾏更新操作ps.executeUpdate();// 关闭PreparedStatementps.close();// 关闭Connectionconn.close();e.printStackTrace();}// 重定向到FindServletresponse.sendRedirect("FindServlet");}/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse* response)*/protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubdoGet(request, response);}}3)、DeleteServlet类package example.servlet.book;import java.io.IOException;import java.sql.Connection;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import example.dao.book.BookJdbcDao;import example.dao.book.ConnectionFactory;/*** Servlet implementation class DeleteServlet*/public class DeleteServlet extends HttpServlet {private static final long serialVersionUID = 1L;/*** @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse* response)*/protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {int id = Integer.valueOf(request.getParameter("id"));try {// // 加载数据库驱动,注册到驱动管理器// Class.forName("com.mysql.jdbc.Driver");// // 数据库连接字符串// String url = "jdbc:mysql://localhost:3306/db_book";// // 数据库⽤户名// String username = "root";// // 数据库密码// String password = "";// // 创建Connection连接// Connection conn = DriverManager.getConnection(url, username,// password);// // 删除图书信息的SQL语句// String sql = "delete from tb_books where id=?";// // 获取PreparedStatement// PreparedStatement ps = conn.prepareStatement(sql);// // 对SQL语句中的第⼀个占位符赋值// ps.setInt(1, id);// // 执⾏更新操作// ps.executeUpdate();// // 关闭PreparedStatement// ps.close();// // 关闭Connection// conn.close();BookJdbcDao bookDao=new BookJdbcDao();Connection conn=ConnectionFactory.getInstance().getConnection();bookDao.delete(conn,id);} catch (Exception e) {e.printStackTrace();}// 重定向到FindServletresponse.sendRedirect("FindServlet");}/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse* response)*/protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}}4、servlet访问url映射配置:由于客户端是通过URL地址访问web服务器中的资源,所以Servlet程序若想被外界访问,必须把servlet程序映射到⼀个URL地址上,这个⼯作在web.xml⽂件中使⽤<servlet>元素和<servlet-mapping>元素完成,<servlet>元素⽤于注册Servlet,它包含有两个主要的⼦元素:<servlet-name>和<servlet-class>,分别⽤于设置Servlet的注册名称和Servlet的完整类名。

【小白日记】Java学习JDBC通过junit单元测试编写CRUD数据库的增删改查

【小白日记】Java学习JDBC通过junit单元测试编写CRUD数据库的增删改查

【⼩⽩⽇记】Java学习JDBC通过junit单元测试编写CRUD数据库的增删改查CRUD : (create, read, update, delete)增删该查上⼀篇博⽂整理了关于sql 中 CRUD的语法这次放到java⼯程当中来进⾏执⾏⾸先还是要依赖之前写好的JDBCUtill 和jbdc.properties以及jdbc的jar⽂件新建⼯程和配置环境和之前完全⼀样不过多叙述建⽴class 命名为TestDemopackage com.sky.jdbc.test;import java.sql.Connection;import java.sql.ResultSet;import java.sql.Statement;import org.junit.Test;import com.sky.jdbc.util.JDBCUtill;/*** 使⽤后junit执⾏单元测试** @author WeiHaoLee**/public class TestDemo {@Testpublic void testQuery() {// 查询Connection conn = null;Statement st = null;ResultSet rs = null;try {// 获取连接对象conn = JDBCUtill.getConn();// 根据连接对象,得到statementst = conn.createStatement();// 执⾏sql 语句返回resulsetString sql = "select * from stu_list";rs = st.executeQuery(sql);// 遍历结果集while (rs.next()) {String name = rs.getString("name");int age = rs.getInt("age");System.out.println(name + " " + age);}} catch (Exception e) {e.printStackTrace();} finally {JDBCUtill.release(conn, st, rs);}}@Testpublic void testInsert() {Connection conn = null;Statement st = null;try {// 获取连接对象conn = JDBCUtill.getConn();// 根据连接对象,得到statementst = conn.createStatement();//执⾏添加String sql = "insert into stu_list values(null , 'aobama' , 59)";//此⽅法的返回结果代表改变的⾏数改变⾏数⼤于0 则修改成功int result = st.executeUpdate(sql);if(result >0) {System.out.println("添加成功");}else {System.out.println("添加失败");}} catch (Exception e) {e.printStackTrace();}finally {JDBCUtill.release(conn, st);}}@Testpublic void testDelete() {Connection conn = null;Statement st = null;try {// 获取连接对象conn = JDBCUtill.getConn();// 根据连接对象,得到statementst = conn.createStatement();//执⾏添加String sql = "delete from stu_list where name= 'aobama'";//此⽅法的返回结果代表改变的⾏数改变⾏数⼤于0 则修改成功 int result = st.executeUpdate(sql);if(result >0) {System.out.println("删除成功");}else {System.out.println("删除失败");}} catch (Exception e) {e.printStackTrace();}finally {JDBCUtill.release(conn, st);}}@Testpublic void testUpdate() {Connection conn = null;Statement st = null;try {// 获取连接对象conn = JDBCUtill.getConn();// 根据连接对象,得到statementst = conn.createStatement();//执⾏添加String sql = "update stu_list set age = 28 where id = 5";//此⽅法的返回结果代表改变的⾏数改变⾏数⼤于0 则修改成功 int result = st.executeUpdate(sql);if(result >0) {System.out.println("更新成功");}else {System.out.println("更新失败");}} catch (Exception e) {e.printStackTrace();}finally {JDBCUtill.release(conn, st);}}}由于引⼊了junit 所以直接到junit进⾏测试即可。

jdbctemplate增删改查语句

jdbctemplate增删改查语句

jdbctemplate增删改查语句JdbcTemplate是Spring框架提供的一个强大的JDBC编程支持类,能够简化数据库操作,使开发者能够更快速、更方便地进行增删改查操作。

在使用JdbcTemplate时,我们需要编写一些SQL语句来执行相关的数据库操作。

1. 查询操作JdbcTemplate的查询方法主要有:- `queryForObject(String sql, Class<T> requiredType, Object... args)`:查询单个对象,返回指定类型的对象。

如果查询结果为空,将会抛出EmptyResultDataAccessException异常。

- `queryForList(String sql, Object... args)`:查询多个对象,返回List集合,每行数据作为一个Map对象,多个Map对象组成List。

- `query(String sql, RowCallbackHandler rowCallbackHandler, Object... args)`:查询多个对象,并通过RowCallbackHandler处理每行数据。

- `query(String sql, RowMapper<T> rowMapper, Object... args)`:查询多个对象,通过RowMapper将每行数据映射为指定的实体对象。

示例代码:```javaString sql = "SELECT * FROM user WHERE id = ?";User user = jdbcTemplate.queryForObject(sql, User.class, userId); String sql = "SELECT * FROM user";List<Map<String, Object>> userList =jdbcTemplate.queryForList(sql);String sql = "SELECT * FROM user";jdbcTemplate.query(sql, new RowCallbackHandler() {@Overridepublic void processRow(ResultSet resultSet) throws SQLException {// 处理每行数据}});String sql = "SELECT * FROM user";List<User> userList = jdbcTemplate.query(sql, new RowMapper<User>() {@Overridepublic User mapRow(ResultSet resultSet, int i) throws SQLException {// 将每行数据映射到User对象User user = new User();user.setId(resultSet.getInt("id"));user.setName(resultSet.getString("name"));return user;}});```2. 插入操作JdbcTemplate的插入方法主要有:- `update(String sql, Object... args)`:执行插入操作,并返回受影响的行数。

dao层update语法

dao层update语法DAO(Data Access Object,数据访问对象)是一种用于访问数据库的设计模式,它把数据的访问逻辑从业务逻辑中分离出来,实现相对简单,可提高代码的可维护性和可测试性。

在DAO层中,我们通常需要实现一些基本的增删改查操作。

其中,update(更新)操作用于修改数据库中已存在的数据,本文将详细介绍DAO层中update语法的使用方法。

SQL中的update语法用于更新表中已有的数据。

在DAO层中,通常使用JDBC(Java Database Connectivity,Java数据库连接)操作数据库,update语法也是通过JDBC操作数据库实现的。

update table_name set col_name1=value1, col_name2=value2, ...where condition;其中,table_name是要更新的表名,col_name1、col_name2是要更新的列名,value1、value2是要更新的值,condition是更新的条件,用于限定要更新的数据行。

下面我们以更新学生表中某个学生的成绩为例,来演示update语法的使用方法。

(1)首先,创建一个Student类表示学生信息,包含id、name、age、score四个属性:public class Student {private int id;private String name;private int age;private int score;// setter和getter方法省略@Overridepublic String toString() {return "Student{" +"id=" + id +", name='" + name + '\'' +", age=" + age +", score=" + score +'}';}}(2)接下来,创建一个StudentDAO类,用于实现对学生表的增删改查操作。

jdbc操作oracle数据库(增删改查)

9.privateString email ;
10.//生成getter、setter方法
11.publicvoidsetId<String id>
12.{
13.this.id = id ;
14.}
15.publicvoidsetName<String name>
16.{
= name ;
84.pstmt.setString<1,id> ;
85.//进行数据库更新操作
86.pstmt.executeUpdate<> ;
87.pstmt.close<> ;
88.}
89.catch<Exception e>
90.{
91.thrownewException<"操作出现异常"> ;
92.}
93.finally
2.importjava.sql.* ;
3.importjava.util.* ;
4.importcn.mldn.lxh.vo.* ;
5.importcn.mldn.lxh.dbc.* ;
6.importcn.mldn.lxh.dao.* ;
7.//此类需要完成具体的数据库操作,需要JDB代码
8.publicclassPersonDAOImplimplementsPersonDAO
76.PreparedStatement pstmt =null;
77.DataBaseConnection dbc =null;
78.//下面是针对数据库的具体操作
79.try
80.{
81.//连接数据库
82.dbc =newDataBaseConnection<> ;

jdbc数据库增、删、改、查语句

jdbc数据库增、删、改、查语句一、增加数据1. 插入单行数据在JDBC中,我们可以使用INSERT INTO语句来向数据库中插入单行数据。

例如,我们要向student表中插入一条新的学生记录,可以使用以下语句:INSERT INTO student (id, name, age) VALUES (1, '张三', 18);2. 批量插入数据如果我们要向数据库中插入多行数据,可以使用批量插入的方式,以提高效率。

例如,我们要向student表中插入多条新的学生记录,可以使用以下语句:INSERT INTO student (id, name, age) VALUES (1, '张三', 18), (2, '李四', 20), (3, '王五', 22);二、删除数据1. 删除指定行数据在JDBC中,我们可以使用DELETE FROM语句来删除数据库中的指定行数据。

例如,我们要删除student表中id为1的学生记录,可以使用以下语句:DELETE FROM student WHERE id = 1;2. 删除所有数据如果我们要删除数据库中的所有数据,可以使用DELETE FROM语句,并不指定任何条件。

例如,我们要删除student表中的所有学生记录,可以使用以下语句:DELETE FROM student;三、修改数据1. 更新指定行数据在JDBC中,我们可以使用UPDATE语句来更新数据库中的指定行数据。

例如,我们要将student表中id为1的学生记录的年龄修改为20岁,可以使用以下语句:UPDATE student SET age = 20 WHERE id = 1;2. 批量更新数据如果我们要更新数据库中的多行数据,可以使用批量更新的方式,以提高效率。

例如,我们要将student表中id为1和2的学生记录的年龄都修改为20岁,可以使用以下语句:UPDATE student SET age = 20 WHERE id IN (1, 2);四、查询数据1. 查询所有数据在JDBC中,我们可以使用SELECT语句来查询数据库中的数据。

jdbc批量插入、批量删除、批量更新

一、JDBC的批量插入JDBC批量插入主要用于数据导入和日志记录因为日志一般都是先写在文件下的等。

我用Mysql5.1.5的JDBCdriver分别对三种比较常用的方法做了测试方法一,使用PreparedStatement加批量的方法1.try{2.Class.forName("com.mysql.jdbc.Driver");3.conn=DriverManager.getConnection(o_url,userName,password);4.conn.setAutoCommit(false);5.Stringsql="INSERTadlogs(ip,website,yyyymmdd,hour,object_id)VALUES(?,?,?,?,?)";6.PreparedStatementprest=conn.prepareStatement(sql,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);7.for(intx=0;x<size;x++){8.prest.setString(1,"192.168.1.1");9.prest.setString(2,"localhost");10.prest.setString(3,"20081009");11.prest.setInt(4,8);12.prest.setString(5,"11111111");13.prest.addBatch();14.}15.prest.executeBatch();mit();17.conn.close();18.}catch(SQLExceptionex){19.Logger.getLogger(MyLogger.class.getName()).log(Level.SEVERE,null,ex);20.}catch(ClassNotFoundExceptionex){21.Logger.getLogger(MyLogger.class.getName()).log(Level.SEVERE,null,ex);22.}说明下在建Statement的时候,后面两个参数的意义:第一个参数指定ResultSet的类型。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

通过JDBC进行简单的增删改查(以MySQL为例)目录前言:什么是JDBC一、准备工作(一):MySQL安装配置和基础学习二、准备工作(二):下载数据库对应的jar包并导入三、JDBC基本操作(1)定义记录的类(可选)(2)连接的获取(3)insert(4)update(5)select(6)delete四、测试五、代码分析六、思考问题前言:什么是JDBC维基百科的简介:Java 数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。

JDBC也是Sun Microsystems的商标。

它JDBC是面向关系型数据库的。

简单地说,就是用于执行SQL语句的一类Java API,通过JDBC使得我们可以直接使用Java编程来对关系数据库进行操作。

通过封装,可以使开发人员使用纯Java API完成SQL的执行。

一、准备工作(一):MySQL安装配置和基础学习使用JDBC操作数据库之前,首先你需要有一个数据库。

这里提供了3个链接供读者自学,如果曾有过SQL语言的使用经历(包括在学校中的课堂学习),前两个链接足以上手。

1.安装和配置:mysql安装图解mysql图文安装教程(详细说明)2.基本操作:21分钟MySQL 入门教程3.简易命令查询:一千行MySQL学习笔记建议边看入门教程,边练习,在练习insert、update、select、delete 等基本操作的同时,将后面要用的表建好。

下图是我接下来用于演示的数据库的表。

二、准备工作(二):下载数据库对应的jar包并导入使用JDBC需要在工程中导入对应的jar包。

数据库与JDBC包的对应关系可以参考各种数据库对应的jar包、驱动类名和URL格式。

在Eclipse下的导入方法:在工程的图标上右击,选择”Properties”,在”Java Bulid Path”中选择”Add External JARs…”,选择下载并解压后获得的jar包。

如果对MySQL进行操作,这时下面的import就不会报错了:import com.mysql.jdbc.Connection;import com.mysql.jdbc.PreparedStatement;除此以外,还需要JDBC的包,直接import即可。

import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;三、JDBC基本操作为了简单起见,与数据库相关的操作、命令、参数都被硬编码了。

有兴趣的读者可以对这些进行探索,降低数据与操作的耦合性。

先看具体代码并实践,本文第五部分对用到的API稍作了研究。

下面的所有方法和数据成员都在public class JDBCOperation内部。

这样做主要是为了便于操作和接口定义,是非必须的。

staticclass Student {private String Id;private String Name;private String Sex;private String Age;Student(String Name, String Sex, String Age) {this.Id = null; //default = Name;this.Sex = Sex;this.Age = Age;}public String getId() {return Id;}publicvoid setId(String Id) {this.Id = Id;}public String getName() {return Name;}publicvoid setName(String Name) { = Name;}public String getSex() {return Sex;}publicvoid setSex(String Sex) {this.Sex = Sex;}public String getAge() {return Age;}publicvoid setage(String Age) {this.Age = Age;}}在操作前必须先获取与数据库的连接。

driver、url的格式同样可以参考各种数据库对应的jar包、驱动类名和URL 格式。

privatestatic Connection getConn() {String driver = "com.mysql.jdbc.Driver";String url = "jdbc:mysql://localhost:3306/samp_db";String username = "root";String password = "";Connection conn = null;try {Class.forName(driver); //classLoader,加载对应驱动conn = (Connection) DriverManager.getConnection(url, username, password);} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}return conn;}privatestaticint insert(Student student) {Connection conn = getConn();int i = 0;String sql = "insert into students (Name,Sex,Age) values(?,?,?)"; PreparedStatementpstmt;try {pstmt = (PreparedStatement) conn.prepareStatement(sql);pstmt.setString(1, student.getName());pstmt.setString(2, student.getSex());pstmt.setString(3, student.getAge());i = pstmt.executeUpdate();pstmt.close();conn.close();} catch (SQLException e) {e.printStackTrace();}return i;}privatestaticint update(Student student) {Connection conn = getConn();int i = 0;String sql = "update students set Age='" + student.getAge() + "' where Name='" + student.getName() + "'";PreparedStatementpstmt;try {pstmt = (PreparedStatement) conn.prepareStatement(sql);i = pstmt.executeUpdate();System.out.println("resutl: " + i);pstmt.close();conn.close();} catch (SQLException e) {e.printStackTrace();}return i;}以select * from XXX为例。

privatestatic Integer getAll() {Connection conn = getConn();String sql = "select * from students"; PreparedStatementpstmt;try {pstmt = (PreparedStatement)conn.prepareStatement(sql); ResultSetrs = pstmt.executeQuery();int col = rs.getMetaData().getColumnCount();System.out.println("============================"); while (rs.next()) {for (int i = 1; i <= col; i++) {System.out.print(rs.getString(i) + "\t");if ((i == 2) && (rs.getString(i).length() < 8)) {System.out.print("\t");}}System.out.println("");}System.out.println("============================");} catch (SQLException e) {e.printStackTrace();}returnnull;}privatestaticint delete(String name) {Connection conn = getConn();int i = 0;String sql = "delete from students where Name='" + name + "'"; PreparedStatementpstmt;try {pstmt = (PreparedStatement) conn.prepareStatement(sql);i = pstmt.executeUpdate();System.out.println("resutl: " + i);pstmt.close();conn.close();} catch (SQLException e) {e.printStackTrace();}return i;}四、测试在测试前,需要在系统中打开对应数据库的服务。

MySQL在Windows下的启动命令为net start mysql测试代码publicstaticvoid main(String args[]) {JDBCOperation.getAll();JDBCOperation.insert(new Student("Achilles", "Male", "14")); JDBCOperation.getAll();JDBCOperation.update(new Student("Bean", "", "7"));JDBCOperation.delete("Achilles");JDBCOperation.getAll();}Eclipse中的输出============================1 Ender male 82 Bean male 63 Petra fema 94 Peter male 95 _Graff male 406 GOD fema 255========================================================1 Ender male 82 Bean male 63 Petra fema 94 Peter male 95 _Graff male 406 GOD fema 2557 Achilles Male 14============================resutl: 1resutl: 1============================1 Ender male 82 Bean male 73 Petra fema 94 Peter male 95 _Graff male 406 GOD fema 255============================五、代码分析在上述对数据库进行增删改查的过程中,可以发现其共性部分,即通用的流程:(1)创建Connection对象、SQL查询命令字符串;(2)对Connection对象传入SQL查询命令,获得PreparedStatement 对象;(3)对PreparedStatement对象执行executeUpdate()或executeQurey()获得结果;(4)先后关闭PreparedStatement对象和Connection对象。

相关文档
最新文档