纯Java JDBC连接数据库,且用JDBC实现增删改查的功能
Java JDBC连接数据库
package cn.cqvie.yjq; import java.sql.*; /**
* 注册数据库的驱动程序,并得到数据库的连接对象
* @author yu
*
*/ public class DBUtil { static String DriverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
static String URL = "jdbc:sqlserver://localhost:1433;DatabaseName=book";
static String USER = "sa";
static String PASSWORD = "123"; //静态代码块,只执行一次
static {
try {
Class.forName(DriverName);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
} //得到连接对象
public static Connection getConnection() {
Connection conn = null;
try {
conn = DriverManager.getConnection(URL,USER,PASSWORD);
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
} //关闭连接
public static void free(ResultSet rs,Statement stmt, Connection conn) {
if(rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
} finally {
if(stmt != null) {
try {
stmt.close();
} catch (Exception e2) {
e2.printStackTrace();
} finally {
if(conn != null) {
try {
conn.close();
} catch (Exception e3) {
e3.printStackTrace();
}
}
}
}
}
}
/*
if(stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
} finally {
if(stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
} if(conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
*/
}
}
使用JDBC实现增删改查的功能
package cn.cqvie.yjq; import java.sql.*;
import java.util.*; public class SQLHelper { /**
* 根据Connection,带坑语句,所有坑的值params来生成一个具体的PreparedStatement语句
* @param conn
* @param cmdText
* @param params
* @return
* @throws SQLException
*/ public static PreparedStatement getPreparedStatement(Connection conn,String cmdText,Object... params) {
if(conn == null) {
return null;
}
PreparedStatement pstmt = null;
try {
pstmt = conn.prepareStatement(cmdText);
int i = 1;
if(params != null) {
for(Object obj:params) {
if(obj != null) {
pstmt.setObject(i, obj);
}
i ++;
}
}
//DBUtil.free(null, null, conn);
return pstmt;
} catch (SQLException e) {
e.printStackTrace();
DBUtil.free(null, pstmt, conn);
}
return null;
} /**
* 查询一个结果集
* @param conn
* @param cmdText
* @param params
* @return
* @throws SQLException
*/
public static List<Object[]> executeQuery(Connection conn,String cmdText,Object...params) {
PreparedStatement pstmt = getPreparedStatement(conn, cmdText, params);
ResultSet rs = null;
List<Object[]> list = new ArrayList<Object[]>();
try {
rs = pstmt.executeQuery();
//从rs中获取每一个行数据的列的个数
ResultSetMetaData rsmd = rs.getMetaData();
int columnCount = rsmd.getColumnCount();
//定义一个保存每一行的各个列的值的容器,Object[]
Object[] objects = null;
while(rs.next()) {
objects = new Object[columnCount];
for(int i = 0;i < columnCount;i ++) {
objects[i] = rs.getObject(i + 1);
}
list.add(objects);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBUtil.free(rs, pstmt, conn);
}
return list;
} /**
* 查询一个具体的值
* @param conn
* @param cmdText
* @param params
* @return
* @throws SQLException
*/
public static Object executeScalar(Connection conn,String cmdText,Object...params) {
Object obj = null;
if(conn == null) {
return null;
}
List<Object[]> list = executeQuery(conn, cmdText, params);
if(list != null && list.size() != 0) {
obj = list.get(0)[0];
return obj;
}
return null;
} /**
* 增删改方法
* @param conn
* @param cmdText
* @param params
* @return
* @throws SQLException
*/
public static int executeUpdate(Connection conn,String cmdText,Object...params) {
if(conn == null) {
return -2;
}
PreparedStatement pstmt = getPreparedStatement(conn, cmdText, params);
int rows = 0;
try {
rows = pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBUtil.free(null, pstmt, conn);
}
return rows;
}
}
纯Java JDBC连接数据库,且用JDBC实现增删改查的功能的更多相关文章
- 用JDBC连接 数据库 进行简单的增删改查
JDBC为java的基础.用jdbc实现对数据库的增删改查的功能是程序员的基本要求.本例以mysql为例,首先要使用本例需要添加mysql-connector-java-5.1.7-bin.jar包. ...
- java springboot整合zookeeper入门教程(增删改查)
java springboot整合zookeeper增删改查入门教程 zookeeper的安装与集群搭建参考:https://www.cnblogs.com/zwcry/p/10272506.html ...
- Java 实现一个 能够 进行简单的增删改查的 超市管理系统
1. 首先编写一个 Fruitltem 的商品类, 描述 商品的基本信息. 代码如下: 保证详细, 运行的起来, 有什么 问题也可以评论留言. /* * 自定义类, 描述商品信息 * * 商品的属性: ...
- Java数据库连接--JDBC基础知识(操作数据库:增删改查)
一.JDBC简介 JDBC是连接java应用程序和数据库之间的桥梁. 什么是JDBC? Java语言访问数据库的一种规范,是一套API. JDBC (Java Database Connectivit ...
- JDBC【1】-- 入门之增删改查
目录 1.jdbc是什么 2.使用IDEA开发 2.1 创建数据库,数据表 2.2 使用IDEA创建项目 1.jdbc是什么 JDBC(Java DataBase Connectivity,java数 ...
- JDBC+Servlet+JSP实现基本的增删改查(简易通讯录)
前言: 最近学习JavaWeb的过程中,自己实践练手了几个小项目,目前已经上传到我的Github上https://github.com/Snailclimb/JavaWebProject.目前只上传了 ...
- java程序设计课期中考试——数据库的增删改查和简单的js界面
首先是设计思路,对于数据库的增删改查,我们借助Ecilipse来进行前端和后端的编写.Ecilipse是可以进行java web项目的操作的. 前端,我们选择用使用jsp,所谓的jsp就是可以嵌入其他 ...
- Java连接MySQL数据库,并进行增删改查
1.具体的代码实现 import java.sql.*; public class DatabaseService { /** * Create Connection * * @param dbtyp ...
- java使用原生MySQL实现数据的增删改查以及数据库连接池技术
一.工具类及配置文件准备工作 1.1 引入jar包 使用原生MySQL,只需要用到MySQL连接的jar包,maven引用方式如下: <dependency> <groupId> ...
随机推荐
- SQL触发器操作
Deleted表用于存储DELETE和UPDATE语句所影响的行的复本.在执行DELETE或UPDATE语句时,行从触发器表中删除,并传输到deleted表中.Deleted表和触发器表通常没有相同的 ...
- [ASP.NET]Net Framework环境问题的一种修复方案
一.情况介绍 造价软件基于.net framework 4.0开发,要成功运行需要在目标电脑上安装4.0版本以上的framework.一般情况下xp是没有的,win7系列自带3.5,都需要手动安装4. ...
- python 十进制 和 IP 地址互转
#! /bin/python def ip2decimalism(ip): dec_value = 0 v_list = ip.split('.') v_list.reverse() t = 1 fo ...
- OCP 12c 062题库大更新,出现大量新题-5
5.One of your databases supports an OLTP workload. The default undo tablespace is fixed size with: 1 ...
- django 获取request请求对象及response响应对象中的各种属性值
django request对象和HttpResponse对象 HttpRequest对象(除非特殊说明,所有属性都是只读,session属性是个例外) HttpRequest.scheme 请求方案 ...
- 主机安全扫描工具-- vuls
https://vuls.io/ 一. 安装 系统管理员有责任定期去检查系统的弱点和更新软件, vuls 可以提供如下功能: 通知管理员机器有安全隐患 支持本地和远程扫描(需要有 ssh 权限) 可以 ...
- 关于省,市,区联动 java 实现方式
关于省,市,区的三级联动后台的实现有两种方式: 1:分三次请求各自取出 省 市 区 的数据: 2:一次请求获得所有的数据,并且组装成相依的数据结构到前端: 其中第一种方式: 会导致数据的延迟加载,出现 ...
- C#之初识单例模式
当我们使用QQ的时候就会发现,他可以启动多个QQ,但是有时候,我们不想这样做,这时候我们就需要使用到单例模式. 1.将Form2的构造函数转为私有 using System.Windows.Forms ...
- day 49 数据分析, 数据聚合 F 查询 Q 查询
6.聚合查询和分组查询 1.聚合查询aggregate 我们先通过一个例子来感受一下吧. 1 2 3 # 计算所有图书的平均价格 books = models.Book.objects.aggrega ...
- postgresql分区表探索(pg_pathman)
使用场景 许多系统在在使用几年之后数据量不断膨胀,这个时候单表数据量超过2000w+,数据库的查询也越来越慢,而随着时间的推移许多历史数据的重要性可能逐渐下降.这时候就可以考虑使用分区表来将冷热数据分 ...