JDBC(三)——使用Statement接口对数据库实现增删改操作(2)_int result = stmt1.executeupdate();-程序员宅基地

技术标签: 连接数据库  Statement接口  ● 数据库  ------【JDBC篇】  

上一篇博客里说到用Statement接口对数据库实现增删改操作,其中的sql语句是我们直接手写的;

但在实际开发过程中,数据都是从前台直接获取的,而不是自己手动导入的;

1.在添加图书这个操作中,我们可以写一个添加方法:

//增加图书的方法
	private static int addBook(int id,String bookName,double price,String author,int bookTypeId) throws Exception{
		//引用工具类dbUtil
		DbUtil dbUtil=new DbUtil();
		//连接数据库
		Connection con=dbUtil.getCon();
		//获取Statement接口
		Statement stmt=con.createStatement();
		//sql语句
		String sql="insert into t_book values("+id+",'"+bookName+"',"+price+",'"+author+"',"+bookTypeId+")";
		//执行sql语句
		int result=stmt.executeUpdate(sql);
		//关闭数据库,将关闭的方法封装到工具类里面的close()方法里面
		dbUtil.close(stmt, con);
		return result;
	}

这样的sql语句就可以用导入的数据,在进行测试之后:

public static void main(String[] args) throws Exception {
		int result=addBook(5,"Web前端",63.0,"大牛",3);
		if(result==1){
			System.out.println("数据添加成功!");
		}else{
			System.out.println("数据添加失败!");
		}
	}

结果:

 

2.但是这样其实也并不好,我们可以用面向对象思想来写一个Model类,将书籍的各个属性进行封装成一个Book类;

package Month01.Day08.Model;

public class Book {

	private int id;
	private String bookName;
	private float price;
	private String author;
	private int bookTypeId;
	
	public Book(int id, String bookName, float price, String author, int bookTypeId) {
		super();
		this.id = id;
		this.bookName = bookName;
		this.price = price;
		this.author = author;
		this.bookTypeId = bookTypeId;
	}
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getBookName() {
		return bookName;
	}
	public void setBookName(String bookName) {
		this.bookName = bookName;
	}
	public float getPrice() {
		return price;
	}
	public void setPrice(float price) {
		this.price = price;
	}
	public String getAuthor() {
		return author;
	}
	public void setAuthor(String author) {
		this.author = author;
	}
	public int getBookTypeId() {
		return bookTypeId;
	}
	public void setBookTypeId(int bookTypeId) {
		this.bookTypeId = bookTypeId;
	}
	
}

然后再写addBook2()方法:

package Month01.Day08.Demo01;

import java.sql.Connection;
import java.sql.Statement;

import Month01.Day08.DbUtil.DbUtil;
import Month01.Day08.Model.Book;

public class insert_sql_2 {

	//增加图书的方法
	private static int addBook2(Book book) throws Exception{
		DbUtil dbUtil=new DbUtil();
		Connection con=dbUtil.getCon();
		Statement stmt=con.createStatement();
		String sql="insert into t_book values("+book.getId()+",'"+book.getBookName()+"',"+
					book.getPrice()+",'"+book.getAuthor()+"',"+book.getBookTypeId()+")";
		int result=stmt.executeUpdate(sql);
		return result;
	}
	

	public static void main(String[] args) throws Exception {
		Book book=new Book(6,"Java设计思想",45,"亨得利",4);
		int result=addBook2(book);
		if(result==1){
			System.out.println("数据添加成功!");
		}else{
			System.out.println("数据添加失败!");
		}
	}
}

测试之后:

可以看到面向对象的思想还是很方便的! 

 

 

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_37084904/article/details/86100816

智能推荐

ResNet论文解读及代码实现_resnet原文及代码-程序员宅基地

文章浏览阅读446次。经典神经网络 | ResNet论文解读及代码实现前言ResNet是2015年ImageNet比赛的冠军,将识别错误率降低到了3.6%,这个结果甚至超出了正常人眼识别的精度。通过观察学习vggnet等经典神经网络模型,我们可以发现随着深度学习的不断发展,模型的层数越来越多,网络结构也越来越复杂。那么是否加深网络结构,就一定会得到更好的效果呢?从理论上来说,假设新增加的层都是恒等映射,只要原有的层学出跟原模型一样的参数,那么深模型结构就能达到原模型结构的效果。换句话说,原模型的解只是新模型的解的子空间,_resnet原文及代码

论文笔记:多标签学习综述(A review on multi-label learning algorithms)_a review of methods for imbalanced multi-label cla-程序员宅基地

文章浏览阅读1.7k次。2014 TKDE(IEEE Transactions on Knowledge and Data Engineering)张敏灵,周志华简单介绍传统监督学习主要是单标签学习,而现实生活中目标样本往往比较复杂,具有多个语义,含有多个标签。本综述主要介绍了多标签学习的一些相关内容,包括相关定义,评价指标,8个多标签学习算法,相关的其它任务。论文大纲相关定义:学习任务,三种策略 评价指..._a review of methods for imbalanced multi-label classification

HCIA理论基础-程序员宅基地

文章浏览阅读824次,点赞18次,收藏22次。端口号:是用电脑可能会同时访问多个服务器,这多个服务器在进行回复时,回复目标都是相同IP/MAC,为了不分配错误,所以再改程序启动时,电脑会在1024-65535随机分配端口号给这个程序,在服务器回包时也会带着这个端口号,这样电脑就能做出正确的数据分配。PDU(协议数据单元):对不同层封装的数据单元进行标识,在应用层统称数据报文,在传输层统称数据段,在网络层统称数据包,在数据链路层统称数据帧,在物理层统称比特流。IP分片的原因:受到二层(数据链路层)的MTU的限制,最大的传输单元不能超过1500字节。

NI-VISA在C#中总是报错完成操作前已过期。VISA-1073807339(0xBFFF0015)ErrorTimeout_visa hex 0xbfff0015-程序员宅基地

文章浏览阅读8.8k次。最近在在使用GPIB从PC连接到Chroma的电子负载63310系列。但是readstring()的时候总是报错,不能读取从电子负载传回的数据。总是在报错: 完成操作前已过期。VISA-1073807339(0xBFFF0015)ErrorTimeout。原来是因为我给Chroma 电子负载6310A的电子负载特定的GPIB命令结束时多加了一个\n结束符。_visa hex 0xbfff0015

解决安装sqlServer2000提示 "以前的某个程序安装已经在计算机上创建挂起的文件操作,必须重启计算机"问题-程序员宅基地

文章浏览阅读2k次。解决安装sqlServer2000提示 "以前的某个程序安装已经在计算机上创建挂起的文件操作,必须重启计算机":程序之前必须重启计算机" 点击“确定”重起机子还是这样提示,请问如何解决? 分析解决: 以前装过sql server,后来删掉。现在重装。或者安装Window2003SP1后也会出现这种情况,解决办法如下: 1)添加/删除程序中彻底删除sql server 2)将没有删除的sql ser

南京计算机会计专业排名2015年,2015江苏财经类大学排名-程序员宅基地

文章浏览阅读334次。2015年江苏财经类大学排名江苏医科类大学排名学校名称全国排名1中国药科大学1252南京医科大学1643南京中医药大学1684徐州医学院355财经类专业介绍财经类专业是指经济类和经济管理类专业,常见的专业包括市场营销、会计、人力资源管理、金融、国际贸易、企业管理、统计、财税等,是近几年来人才市场上的热门专业。另外,有关专家预测,未来十大热门职业分别是理财规划师、系统集成工程师、律师、物流师、注册会..._江苏省大学会计排名2015

随便推点

Scrapy学习笔记-Anaconda下安装_anaconda,那么可以通过 conda 命令安装 scrapy-程序员宅基地

文章浏览阅读8.8k次。安装 Scrapy参考自Scrapy的官方手册:https://docs.scrapy.org/en/latest/intro/install.htmlScrapy在CPython(默认Python实现)和PyPy(从PyPy 5.9开始)下的Python 3.5或更高版本上运行。Anaconda下安装如果您使用的是Anaconda或Miniconda,则可以从conda-forge渠道安..._anaconda,那么可以通过 conda 命令安装 scrapy

R语言对数函数(已知底数和幂,求指数)-程序员宅基地

文章浏览阅读10w+次,点赞8次,收藏58次。R语言非常强大,可以计算各种类型的指数函数.例如假设y=a^x,求x。函数log(p1 [, p2]),其中p1为幂,p2为底数,若p2不存在,则底数为e,结果为指数。http://baike.baidu.com/picture/3054398/3054398/0/63d9f2d3572c11df9a487f8c632762d0f603c280.html?fr=lemma&ct=s_r语言对数函数

搭建react + typescript + airbnb eslint 项目_airbnb-typescript安装-程序员宅基地

文章浏览阅读871次。步骤:使用 create-react-app 创建项目 + typescript安装eslint – airbnb修改 .eslintrc.json配置// 1.使用 create-react-app 创建项目 + typescript// (npx create-react-app my-app --typescript 已废弃 -- 中文文档更新不及时)// 参照英文文档 https://create-react-app.dev/docs/adding-typescriptnpx cr_airbnb-typescript安装

Web自动化测试从基础到项目实战之一启动不同的浏览器及配置_web自动化测试启动指定内置浏览器是什么-程序员宅基地

文章浏览阅读274次。 在web自动化中目前selenium作为底层的自动化测试是目前运用最广的,但是各个公司都会在这个基础之上进行修改。首先当我们测试环境有了之后我们需要做得就是去配置我们的driver,这里的driver你可以理解为就是我们脚本和浏览器之间的桥梁。在selenium里面一些简短的教程会这样写: 1 2 3 #coding=utf-8 fromseleniumimportwebdriver driver=webdriver.Chrom..._web自动化测试启动指定内置浏览器是什么

lucene 的分析器(analyzer)与分词器(tokenizer)和过滤器(tokenfilter)-程序员宅基地

文章浏览阅读259次。1〉analyzer主要包含分词器跟过滤器,他的功能就是:将分词器跟分析器进行合理的组合,使之产生对文本分词和过滤效果。因此,分析器使用分词和过滤器构成一个管道,文本在“滤过”这个管道之后,就成为可以进入索引的最小单位。 2〉tokenizer主要用于对文本资源进行切分,将文本规则切分为一个个可以进入索引的最小单元 3〉tokenfilter主要对分词器切分的最小单位进入索引进行预处理,如:大..._lucene指定分词器ngramtokenizer

堆和堆排序的实现(C语言数据结构)_数组伪指针-程序员宅基地

文章浏览阅读552次,点赞7次,收藏7次。目录一、需要实现的功能二、具体功能的实现1.初始化堆2.堆的销毁3.交换函数4.打印堆中的全部元素5.向上调整我们的元素6.堆元素的插入7.向下调整8.删除堆顶的元素9.判断我们当前的堆是否为空10.输出我们堆中的元素个数11.查找我们当前堆顶的元素12.合集三、堆排序的实现方法一:方法二:方法三:一、需要实现的功能#pragma once// 小堆#include<stdio.h>#include_数组伪指针

推荐文章

热门文章

相关标签