Java数据库通用操作类的代码
Java操作数据库主要有以下三个步骤:1)查找数据库驱动;2)生成Connection对象;3)生成Statement对象,然后使用Statement对象进行数据库的增删改查操作。为了更加方便使用,对上述操作进行封装,增删改三个操作封装为update方法,参数为标准的SQL语句,返回值为boolean类型;查询封装为query方法,方法的参数也为标准的查询SQL语句,返回为记录集ResultSet;单独编写initialize方法实现配置文件读取,Connection对象生成,Statement生成等操作,并将initialize()方法与类的构造函数合并,即一生成类对象即完成初始化操作;close()方法实现了对数据资源回收工作,值得注意的是在初始化操作时,是先生成Connection对象,再生成Statement对象,而关闭时是先关闭Statement对象再关闭Connection对象,这一点一定要注意。
数据库类中可能发生变化的内容:数据库驱动,url,用户名和密码,单独在配置文件中,防止发生变化时需要修改和重新编译代码。
配置文件内容如下:
driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8 username=root password=test
具体DBProcess.java的代码如下:
package edu.sgit.db; import java.io.IOException; import java.io.InputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; import java.util.Properties; /* * 表名:test * id int 自增 * username varchar(50) * password varchar(50) * */ //insert into test(username,password) // values('admin','111'); //update test set password='222' where id=1 //update test set password='222' where username='admin' //delete from test where id=1; // delete from test where username='admin' // select * from test where username='admin' public class DBProcess { private Connection conn = null; private Statement stmt = null; public DBProcess(){ initialize(); } public void initialize(){ try{ String driver="";//数据库驱动类 String url=""; String username=""; String password=""; //读配置文件,获取,driver,url,username,password InputStream in = this.getClass().getResourceAsStream("prop.properties"); //字节流 Properties prop = new Properties(); try { prop.load(in); } catch (IOException e) { e.printStackTrace(); } driver = prop.getProperty("driver"); url=prop.getProperty("url"); username = prop.getProperty("username"); password = prop.getProperty("password"); //1.查找数据库驱动 Class.forName(driver);//查找数据库驱动 //2.建立数据库连接,并生成相应的连接对象 conn = DriverManager.getConnection(url,username,password);//建立数据库连接 //3.生成数据库操作对象stmt stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); }catch(Exception ex){ ex.printStackTrace(); } } //在数据表中添加,修改,删除一条记录 public boolean update(String sql){ try{ //添加 //insert into test(username,password) // values('admin','111'); //修改数据库记录 //update test set password='222222' where id=1, //删除记录 //sql = "delete from test where id=8" stmt.executeUpdate(sql); return true; }catch(Exception ex){ ex.printStackTrace(); return false; } } //查询结果 //sql ="select * from test" public ResultSet query(String sql){ try{ return stmt.executeQuery(sql); }catch(Exception ex){ ex.printStackTrace(); return null; } } public void close(){ try{ if(stmt!=null) stmt.close(); if(conn!=null) conn.close(); }catch(Exception ex){ ex.printStackTrace(); } } }
测试代码:
package edu.sgit.test; import java.sql.ResultSet; import edu.sgit.db.DBProcess; public class DBTest { public static void main(String[] args) { /* +--------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------+--------------+------+-----+---------+----------------+ | Id | int(11) | NO | PRI | NULL | auto_increment | | title | varchar(100) | YES | | NULL | | | msg | text | YES | | NULL | | | inDate | datetime | YES | | NULL | | | count | int(11) | YES | | 0 | | +--------+--------------+------+-----+---------+----------------+ * */ DBProcess db = new DBProcess(); //add String title="abc"; String msg="msg_0001"; String date="2020-09-20 10:45:23"; int count=100; int id=8; //如果字段是字符,变量前后加'',如果字段是数值类型,不加单引号 //title:'aaa0000' //count:100 String sql0="insert into msg(title,msg,inDate,count) values('abc','msg_0001','2020-09-20 10:45:23',100)"; String sql1="insert into msg(title,msg,inDate,count) values('"; sql1 = sql1 + title +"','"; sql1 = sql1 + msg +"','"; sql1 = sql1 + date +"',"; sql1 = sql1 + count +")"; System.out.println(sql1); boolean flag = db.update(sql1); if(flag) { System.out.println("add ok!"); }else { System.out.println("add error!"); } //update sql1 ="update msg set title='"; sql1 = sql1+title+"' where id="+id; flag = db.update(sql1); if(flag) { System.out.println("udpate ok!"); }else { System.out.println("udpate error!"); } //delete sql1 ="delete from msg where id="+id; flag = db.update(sql1); if(flag) { System.out.println("delete ok!"); }else { System.out.println("delete error!"); } //query sql1 ="select * from msg"; ResultSet rs = db.query(sql1); try { while(rs.next()) { System.out.print(rs.getInt("id")); System.out.print("\t"); System.out.print(rs.getString("title")); System.out.print("\t"); System.out.print(rs.getString("msg")); System.out.print("\t"); System.out.print(rs.getString("inDate")); System.out.print("\t"); //System.out.print(rs.getInt("count")); //System.out.print("\n"); } }catch(Exception ex) { ex.printStackTrace(); } } }

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
what's new in dubbogo v1.5.6
作者 | 铁城dubbo-go 社区 committer dubbogo 社区近期发布了 dubbogo v1.5.6。该版本和 dubbo 2.7.8 对齐,提供了命令行工具,并提供了多种加载配置的方式。相关改进实在太多,本文只列出相关重大 feature 和性能提升项。 1. 命令行工具 熟悉dubbo的朋友可能知道 dubbo 支持 telnet 命令行在线调试。 本次发布也增加了 dubbo-go 的 cli 命令行工具,可以方便用户直连特定服务,通过编写 json 文件来定义传输结构和数据,发起调用进行在线调试,打印返回数据和耗时情况。 目前支持嵌套 struct,但是只支持单个参数的请求包和回包。数据类型由于需要在 json 中定义,只支持 golang 基本数据类型:字符串、整形、浮点。 社区后续会再发一篇文章,着重讲解其原理和实现。相关 pr 为 https://github.com/apache/dubbo-go/pull/818 由 dubbogo 最年轻的 00 后 apache committer 李志信同学实现。 2. 代理实现扩展 重构 Proxy,添加 I...
- 下一篇
Python3+ Django3:自动生成Swagger接口文档
1. 前言 当接口开发完成,紧接着需要编写接口文档。传统的接口文档通常都是使用Word或者一些接口文档管理平台进行编写,但此类接口文档维护更新比较麻烦,每次接口有变更,需要手动修改接口文档。在实际的工作中,经常会遇到:“前端抱怨后端给的接口文档与实际情况不一致。后端又觉得编写及维护接口文档会耗费不少精力,经常来不及更新”。为了解决这个问题,业界推出了一个Swagger框架来管理接口文档,实现接口文档的自动更新。 采用Swagger框架来管理接口文档,常用于在微服务架构设计或者Java的后端服务工程中。这也造成了很多读者误认为Swagger只是Java语言下的一个框架,其实并不是的,Swagger除了能应用在Java语言的工程中,也同时适用于在其它语言下,比如Python。接下来,在本篇文章,介绍的就是基于Python3+Django3下,如何接入Swagger框架,并且实现Swagger接口文档的自动生成。 2.Swagger介绍 Swagger:它是一款RESTFUL接口的文档在线自动生成+功能测试并集规范于一体的工具框架,可用于生成、描述、调用和可视化RESTful风格的Web服务...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2全家桶,快速入门学习开发网站教程
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装