技术标签: 连接数据库 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("数据添加失败!");
}
}
}
测试之后:
可以看到面向对象的思想还是很方便的!
文章浏览阅读735次。1.CompletableFuture是什么?CompletableFuture是JDK8的新特性之一,是异步调用相关的API,用于简化异步调用,提高异步调用的效率2.CompletableFuture有什么用?CompletableFuture 是对 Future对象的增强(JDK1.5),解决了异步调用中的很多问题:例如:多个异步任务之间的结果依赖问题,获取future结果时阻塞主线程的问题,..._jdk8异步调用
文章浏览阅读412次。本人想去除字符串后面的空格,但是,这个空格比较特殊,使用trim函数等多种方式都不能去除,问题1:怎么,通过char方法,获取到utf-16编码,进而判断,空格到底是属于哪一个字符?问题2:怎么去除下面代码中字符后面的空格?代码如下:public static void main(String[] args) {String str="勇";for(int i = 0;ichar c = s...
文章浏览阅读259次。使用两个计数器变量来跟踪总计数和阳性数。在开始时将它们设置为0,然后无论何时您想要添加1,在循环中使用+= 1。然后,通过去掉百分比符号,然后使用以下方法将字符串转换为数字,测试百分比是否大于0。if float(row[0].strip('%')) > 0。你可以将此更改为>=如果您想将0包含在“正”类别中。totalCount = 0numberOfPositives = 0with open..._如何用python把excel中某列金额判断出正负
文章浏览阅读185次。本问题已经有最佳答案,请猛点这里访问。登录页面中出现以下警告:它在localhost中工作,但在远程主机中不工作警告:session_start()[function.session-start]:无法发送会话cookie - 已经发送的标头(输出从第8行开始)警告:session_start()[function.session-start]:无法发送会话缓存限制器 - 已发送的标头(输出从第8..._tp session_start():不能发送已发送的会话cookie头
文章浏览阅读344次。主机名ip备注k8s_master192.168.98.18Master&etcdk8s_node1192.168.98.19Node1k8s_node2192.168.98.20Node2Kubernetes是goole开源的大规模容器集群管理系统,使用centos7自带的Kubernetes组件、分布式键值存储系统etcd以及flannel实现Doc..._以下是在 centos 7 yum单节点上使用 kubernetes 进行部署的详细步骤
文章浏览阅读412次。所有教程由迅为原创,是迅为工作多年的工程师精心编写,深知初学者痛点。从Linux入门到驱动开发再到系统移植,一步一步由浅入深,逐步掌握嵌入式技术。每个例子有详细的注释,每个命令详细的说明。只要你对嵌入式感兴趣,就可以学习。视频精简,思路清晰,不做无用功让所学每一个技术点都能真真切切落实到项目中,学即所用。B站搜索‘北京迅为’ ,免费观看视频教程[ https://space.bilibili.com/33785640 ]嵌入式技术的学习方法:作为资..._讯为电子linux
文章浏览阅读3.2k次。问题:cloudera-scm-agent已死,但pid文件存在背景: 公司因为周末停电,所以关闭了cloudera集群。这是启动集群的时候出现的问题定位错误的过程:首先查看cloudera-scm-server的日志,发现日志刷到出现7180端口的过程中有一个小小的Exception,似乎与图中的这个错误无关。但是最后这个cloudera的登录界面是可以成功上去的。然后就百度开始各种搜..._cloudera agent pid
文章浏览阅读1.5w次,点赞18次,收藏113次。R语言画个中国地图,使用shp文件前几天帮人用R语言画个一个河北省的地图,河北省各个市被填充上颜色,颜色的深浅和这个市的GDP有关系,效果如下:然后加上各个城市的名字并加上指北针、再把背景的网格去掉,效果如下:那么如何做的??library(rgdal)library(ggplot2)library(maptools)library(mapproj)library(ggsn)......_中国地图软件 shp
文章浏览阅读209次。6006.Cacti监控华为NE80路由器电源和风扇运行状态第1张图是对华为NE80路由器的电源运行状态进行监控,第2张图是对华为NE80路由器的风扇运行状态和风扇转速进行监控,第3张图则对华为NE80路由器风扇模块的温度探测器进行设备温度监控,这些监控均是使用Cacti通过SNMP采集华为私有MIB的相关OID实现。..._华为 路由器 电源状态oid
文章浏览阅读4.3k次,点赞5次,收藏22次。标题手势控制 Python !Leap Motion Python 开发教程最近需要使用 Leap Motion 控制机械灵巧手,所以在 Python 的平台上做了一些 Leap Motion 的开发,现在整理一下发出来喽有兴趣的同学可以浏览一下 Leap Motion 开发者官网 哦一,配置环境Leap Motion 的开发者官方指出目前的开发文件最高只支持 Python 2.7, 所以..._leapmotion python
文章浏览阅读2.3k次。docker 挂载数据到宿主机硬盘的两种方式 _docker查看容器挂载信息
文章浏览阅读642次。问题我的问题。很简单但没有人问过它也没有回答过。我有一个扁平的JSON:{"number1":"value1", "number2":"value2", "number3":"value3" }我可以将它设置为JSONObject就好了。但是,我不知道如何遍历每个项目并获取其键字符串和值字符串。任何人都可以提供使用JSONObject的有效代码吗?我真正想要的是获得每个项目的关键和价值,而不是预先..._javajsonobject 属性个数