不多bb了直接上。

工具:myeclipse 2016,mysql 5.7

目的:java操作数据库增删改查商品信息

test数据库的goods表

gid主键,自增

1、实体类Goods:封装数据库数据(与数据库表中各字段相匹配的类)

// 实体类
public class Goods {
private int gid;
private String gname;
private double gprice;
private String gdate;
//生成get、set方法
public int getGid() {
return gid;
}
public void setGid(int gid) {
this.gid = gid;
}
public String getGname() {
return gname;
}
public void setGname(String gname) {
this.gname = gname;
}
public double getGprice() {
return gprice;
}
public void setGprice(double gprice) {
this.gprice = gprice;
}
public String getGdate() {
return gdate;
}
public void setGdate(String gdate) {
this.gdate = gdate;
}
//生成构造方法
public Goods(int gid, String gname, double gprice, String gdate) {
super();
this.gid = gid;
this.gname = gname;
this.gprice = gprice;
this.gdate = gdate;
}
//生成无参构造方法
public Goods() {
super();
} }

2、实现类GoodsDao(不带DBHelper):操作数据库实现增删改查

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Scanner; public class GoodsDao { public static void main(String[] args) {
GoodsDao dao = new GoodsDao();
// dao.add(); // dao.del(); // dao.upd();
Scanner input = new Scanner(System.in); System.out.println("请输入商品名称:"); String name = input.next(); System.out.println("请输入商品价格:"); double price = input.nextDouble(); dao.newAdd(name, price); // System.out.println("请输入最低价格:");
// double price = input.nextDouble();
//
// dao.search(price);
//
System.out.println("已经成功完成操作!");
} // 增数据
public void add(){
try{
// 1.通过反射,加载驱动类到jvm
Class.forName("com.mysql.jdbc.Driver");
// 2.获取数据库连接对象
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?characterEncoding=utf8&useSSL=true","root","");
// 3.创建数据库操作对象
Statement stmt = conn.createStatement();
// 4.操作数据库
stmt.execute("insert into goods(gname,gprice,gdate) values('ggg','2.33',now())"); //5.关闭各个资源
stmt.close();
conn.close(); } catch(Exception e){
e.printStackTrace();
}
}
//删数据
public void del(){
try{
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?characterEncoding=utf8&useSSL=true","root",""); Statement stmt = conn.createStatement(); stmt.execute("delete from goods where gid=1"); stmt.close();
conn.close(); } catch(Exception e){
e.printStackTrace();
}
}
//改数据
public void upd(){
try{
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?characterEncoding=utf8&useSSL=true","root",""); Statement stmt = conn.createStatement();
stmt.execute("update goods set gname='ggg' where gid=1 "); stmt.close();
conn.close(); } catch(Exception e){
e.printStackTrace();
}
}
//查数据
public void search(double price){
try{
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?characterEncoding=utf8&useSSL=true","root",""); Statement stmt = conn.createStatement();
// 结果集对象
ResultSet rs = stmt.executeQuery("select * from goods where gprice>"+price); while(rs.next()){
System.out.println(rs.getString(1)+"#"+rs.getString("gname")+"#"+rs.getDouble("gprice")+"#"+rs.getString("gdate"));
} rs.close();
stmt.close();
conn.close(); } catch(Exception e){
e.printStackTrace();
}
} //用拼字符串的方法增数据
public void newAdd(String gname, double gprice){
try{
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?characterEncoding=utf8&useSSL=true","root",""); // Statement stmt = conn.createStatement();
//
// stmt.execute("insert into goods(gname, gprice,gdate) values('"+gname+"','"+gprice+"',now())");
//
// stmt.close();
//拼字符串更简单
String sql = "insert into goods(gname, gprice, gdate) values(?,?,now())"; PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setString(1, gname);
pstmt.setDouble(2, gprice); pstmt.execute(); conn.close();
} catch(Exception e){
e.printStackTrace();
}
} }

3、DBHelper类:解决上述代码操作数据库的重复工作

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement; /**
* 获取数据库操作的连接对象
* 关闭数据库操作的各种资源
* @author 晏先政
*
*/
public class DBHelper {
private static final String className = "com.mysql.jdbc.Driver";
private static final String url = "jdbc:mysql://localhost:3306/test?characterEncoding=utf8&useSSL=true";
private static final String uname = "root";
private static final String upass = ""; /**
* 获取数据库连接对象的方法
*/
public static Connection getConn(){
Connection conn = null;
try{
Class.forName(className);
conn = DriverManager.getConnection(url,uname, upass);
} catch(Exception e){
e.printStackTrace();
} return conn;
} /**
* 关闭数据库连接对象
*/
public static void closeConn(Connection conn){
try{
if(conn!=null){
conn.close();
}
} catch(Exception e){
e.printStackTrace();
}
} /**
* 关闭数据库操作对象
*/
public static void closeStmt(Statement stmt){
try{
if(stmt!=null){
stmt.close();
}
} catch(Exception e){
e.printStackTrace();
}
} /**
* 关闭数据库操作对象
*/
public static void closePstmt(PreparedStatement pstmt){
try{
if(pstmt!=null){
pstmt.close();
}
} catch(Exception e){
e.printStackTrace();
}
} /**
* 关闭数据库操作对象
*/
public static void closeRs(ResultSet rs){
try{
if(rs!=null){
rs.close();
}
} catch(Exception e){
e.printStackTrace();
}
}
}

4、实现类NewDao(带DBHelper):操作数据库实现增删改查

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner; public class NewDao { public static void main(String[] args) {
NewDao nd = new NewDao();
nd.show();
// Scanner input = new Scanner(System.in);
//改数据
// System.out.println("请输入要修改的商品编号:");
// int gid = input.nextInt();
// System.out.println("请输入要修改的商品名称:");
// String gname = input.next();
// System.out.println("请输入要修改的商品价格:");
// double gprice = input.nextDouble();
//
// nd.upd(gid, gname, gprice); //查数据
// System.out.println("请输入最低价格:");
// double mprice = input.nextDouble();
// System.out.println("请输入最高价格:");
// double xprice = input.nextDouble();
//
// nd.search(mprice, xprice); }
private Connection conn = null;
private PreparedStatement pstmt = null;
private ResultSet rs = null;
//查数据
public void search(double minprice, double maxprice){
try{
conn = DBHelper.getConn();
String sql = "select * from goods where gprice>=? and gprice<=?";
// 预编译的对象
pstmt = conn.prepareStatement(sql); pstmt.setDouble(1, minprice);
pstmt.setDouble(2, maxprice); rs = pstmt.executeQuery();
while(rs.next()){
System.out.println(rs.getString("gid")+"#"+rs.getString("gname")+"#"+rs.getString("gprice"));
} } catch(Exception e){
e.printStackTrace();
} finally{
DBHelper.closeRs(rs);
DBHelper.closePstmt(pstmt);
DBHelper.closeConn(conn);
}
} //改数据
public void upd(int gid , String gname, double gprice){
try{
conn = DBHelper.getConn();
String sql = "update goods set gname=?, gprice=? where gid=?"; pstmt = conn.prepareStatement(sql);
pstmt.setString(1, gname);
pstmt.setDouble(2, gprice);
pstmt.setInt(3, gid); pstmt.execute(); } catch(Exception e){
e.printStackTrace();
} finally{
DBHelper.closePstmt(pstmt);
DBHelper.closeConn(conn);
}
} //用集合展示数据
public List<Goods> getAllGoods(){
List<Goods> list = new ArrayList<Goods>();
try{
conn = DBHelper.getConn(); String sql = "select * from goods"; pstmt = conn.prepareStatement(sql); rs = pstmt.executeQuery(); while(rs.next()){
Goods goods = new Goods(rs.getInt("gid"),rs.getString("gname"),rs.getDouble("gprice"),rs.getString("gdate")); list.add(goods);
} } catch(Exception e){
e.printStackTrace();
} finally{
DBHelper.closeRs(rs);
DBHelper.closePstmt(pstmt);
DBHelper.closeConn(conn);
}
return list;
} public void show(){
List<Goods> list = getAllGoods(); for(int i=0;i<list.size();i++){
System.out.println(list.get(i).getGid()+"#"+list.get(i).getGname()+"#"+list.get(i).getGprice());
}
} }

java操作数据库:增删改查的更多相关文章

  1. java操作数据库增删改查的小工具1--TxQueryRunner

    在java程序中,一般使用jdbc连接数据库,比较麻烦,在看传智教程时学了一个工具类,用于简化与数据库之间的操作步骤,就是TxQueryRunner,他是QueryRunner的子类,用起来和他是一样 ...

  2. java操作数据库增删改查的小工具2--TxQueryRunner

    当涉及到多表查询时,如数据库中有两张表分别为t_person和t_address,表结构如下: 其中t_person的外键为t-address的主键aid, 新建两个javaBean类,Person ...

  3. 2. MongoDB基本操作 —— 用Mongo.exe操作数据库增删改查

    一.开篇 传统的关系数据库一般由数据库(database).表(table).记录(record)三个层次概念组成,MongoDB是由数据库(database).集合(collection).文档对象 ...

  4. MongoDB(六)java操作mongodb增删改查

    java操作mysql数据库的代码我们已经了如指掌了.增删改查,java对mongodb数据库也是类似的操作,先是数据库连接.再是进行操作. 首先我们进入进入admin数据库.然后建立自己的数据库te ...

  5. Django-Model操作数据库(增删改查、连表结构)

    一.数据库操作 1.创建model表         基本结构 1 2 3 4 5 6 from django.db import models     class userinfo(models.M ...

  6. phpcms 操作数据库 增删改查

    数据库的其他类继承的都是libs/class/model.class.php 这里面有写好的操作数据库的常用方法 1.增 insert($data, $return_insert_id = false ...

  7. MongoDB学习day04--NodeJs操作数据库增删改查

    一.在Nodejs中使用Mongodb Nodejs需要引入的包 npm install mongodb --save -dev 或者使用镜像 cnpm install mongodb --save ...

  8. Java针对数据库增删改查代码

    package com.bank.abc; import java.beans.PropertyVetoException; import java.sql.Connection; import ja ...

  9. JavaWeb学习记录(七)——MVC操作数据库增删改查与分页功能

    一.分页工具类 package blank.util;import java.util.List; import org.springframework.jdbc.core.JdbcTemplate; ...

  10. 6. MongoDB——Java操作(增删改查)

    转自:https://blog.csdn.net/kai402458953/article/details/79626148 import java.net.UnknownHostException; ...

随机推荐

  1. Java 类设计技巧

    摘自<Java核心技术>卷I:基础知识 p140 第4章对象与类 - 类设计技巧 1)一定将数据设计为私有. 最重要的是:绝对不要破坏封装性.有时候,需要编写一个访问器方法或更改器方法,但 ...

  2. Vue中的计算属性与$watch

    计算属性:在模板中绑定表达式是非常便利的,但是他们实际上只用于简单的操作.模板是为了描述视图的结构.在模板中放入太多的逻辑会让模板过重且难以维护.这就是为什么vue.js将绑定表达式限制为一个表达式. ...

  3. [WC2008]游览计划 解题报告

    [WC2008]游览计划 斯坦纳树板子题,其实就是状压dp 令\(dp_{i,s}\)表示任意点\(i\)联通关键点集合\(s\)的最小代价 然后有转移 \[ dp_{i,S}=\min_{T\in ...

  4. Naive Operations HDU6315 (杭电多校2G)

    让ci = ai / bi, 求sum(ci)的值,因为每次 ai 都是加一的,那么我可以用一颗线段树来维护每个 i 位置的 ai 距离达到 bi 还需要的数的最小值,更新是每次都减一,如果我某一个区 ...

  5. CSS之2D转换模块

    CSS 2D转换模块 transform 参考W3手册 transform 属性向元素应用从2D 或3D转换.该属性允许我们对元素进行旋转.缩放.移动或者倾斜. 格式: transform: none ...

  6. Class实例在堆中还是方法区中?

    1.JVM中OOP-KLASS模型 在JVM中,使用了OOP-KLASS模型来表示java对象,即:1.jvm在加载class时,创建instanceKlass,表示其元数据,包括常量池.字段.方法等 ...

  7. poj2259 Team Queue

    吼哇,又是水题. 我本来准备开1010个queue的,但是STL容器里好像只有vector滋磁开组,于是只好数组模拟... 然后模拟过了...... #include <cstdio> # ...

  8. C#串口通信:2自动连接

    上次说到了协议的大致结构,这次我们来说说怎么去实现制动连接串口(当你把设备连上来之后,怎么去让软件自动去识别是否为目标设备,当然这需要上位机与下位机共同完成,这里我们只讨论上位机部分)先上协议: 帧头 ...

  9. pandas中遍历dataframe的每一个元素

    假如有一个需求场景需要遍历一个csv或excel中的每一个元素,判断这个元素是否含有某个关键字 那么可以用python的pandas库来实现. 方法一: pandas的dataframe有一个很好用的 ...

  10. Nginx上部署HTTPS + HTTP2

    Nginx上部署HTTPS依赖OpenSSL库和包含文件,即须先安装好libssl-dev(或者OpenSSL),且ln -s /usr/lib/x86_64-linux-gnu/libssl.so ...