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实现增删改查的功能的更多相关文章

  1. 用JDBC连接 数据库 进行简单的增删改查

    JDBC为java的基础.用jdbc实现对数据库的增删改查的功能是程序员的基本要求.本例以mysql为例,首先要使用本例需要添加mysql-connector-java-5.1.7-bin.jar包. ...

  2. java springboot整合zookeeper入门教程(增删改查)

    java springboot整合zookeeper增删改查入门教程 zookeeper的安装与集群搭建参考:https://www.cnblogs.com/zwcry/p/10272506.html ...

  3. Java 实现一个 能够 进行简单的增删改查的 超市管理系统

    1. 首先编写一个 Fruitltem 的商品类, 描述 商品的基本信息. 代码如下: 保证详细, 运行的起来, 有什么 问题也可以评论留言. /* * 自定义类, 描述商品信息 * * 商品的属性: ...

  4. Java数据库连接--JDBC基础知识(操作数据库:增删改查)

    一.JDBC简介 JDBC是连接java应用程序和数据库之间的桥梁. 什么是JDBC? Java语言访问数据库的一种规范,是一套API. JDBC (Java Database Connectivit ...

  5. JDBC【1】-- 入门之增删改查

    目录 1.jdbc是什么 2.使用IDEA开发 2.1 创建数据库,数据表 2.2 使用IDEA创建项目 1.jdbc是什么 JDBC(Java DataBase Connectivity,java数 ...

  6. JDBC+Servlet+JSP实现基本的增删改查(简易通讯录)

    前言: 最近学习JavaWeb的过程中,自己实践练手了几个小项目,目前已经上传到我的Github上https://github.com/Snailclimb/JavaWebProject.目前只上传了 ...

  7. java程序设计课期中考试——数据库的增删改查和简单的js界面

    首先是设计思路,对于数据库的增删改查,我们借助Ecilipse来进行前端和后端的编写.Ecilipse是可以进行java web项目的操作的. 前端,我们选择用使用jsp,所谓的jsp就是可以嵌入其他 ...

  8. Java连接MySQL数据库,并进行增删改查

    1.具体的代码实现 import java.sql.*; public class DatabaseService { /** * Create Connection * * @param dbtyp ...

  9. java使用原生MySQL实现数据的增删改查以及数据库连接池技术

    一.工具类及配置文件准备工作 1.1 引入jar包 使用原生MySQL,只需要用到MySQL连接的jar包,maven引用方式如下: <dependency> <groupId> ...

随机推荐

  1. Excel 帮助无法正常工作的解决方法

    Excel 中出现错误:帮助无法正常工作,但您仍可以转到 Office.com,以获得最新和最好的文章.视频和培训课程. 英文消息:Help isn't working, but you can st ...

  2. Code Review Checklist and Guidelines for C# Developers

    Checklist1. Make sure that there shouldn't be any project warnings.2. It will be much better if Code ...

  3. 20181015记录一个简单的TXT日志类

    20190422添加换行以及时间记录 using System; using System.Collections.Generic; using System.IO; using System.Lin ...

  4. JEECG(一) 如何配置自己的业务包

    使用自己的业务包开发,不在com.jeecg业务包下 请首先阅读这篇文章[官网] http://www.jeecg.org/forum.php?mod=viewthread&tid=1832& ...

  5. C# Task

    Task是一种基于任务的编程模型.它与thread的主要区别是,它更加方便对线程进程调度和获取线程的执行结果. Task类和thread类,前者接收的是Action委托类型,后者接收的是Func委托类 ...

  6. Docker Compose 部署前后端分离应用

    部署前后端分离应用 容器化 Abp 应用 关于 Abp 应用的容器化,其实和普通的 ASP.NET Core 应用差不多,大家可以参考我此前的文章. 唯一需要注意的是:因为 Abp 解决方案中有多个项 ...

  7. 微信游戏《全民炫舞》开发公司h3d2 engine和QQ炫舞2 布料系统技术介绍

    H3D公司开发的<全民炫舞>上线了. 蝉联IOS榜首很多天. 整理了一下过去公司游戏引擎开发的历史.有兴趣可以去看看 公司游戏引擎开发历史介绍: http://www.h3d.com.cn ...

  8. python 多线程示例

    原文链接:http://www.cnblogs.com/whatisfantasy/p/6440585.html 1 概念梳理: 1.1 线程 1.1.1 什么是线程 线程是操作系统能够进行运算调度的 ...

  9. Python 将字典的元素按照键或者值的大小进行排序

    在开发的过程中有时遇到这样的需求,一个字典里保存了一份完整的数据,其中键是一个id,值是时间,需要获取最新的5条数据,处理方式如下: 假设字典数据的变量名为my_dict data_list = so ...

  10. [JavaScript] js获取当前页面url网址信息

    在WEB开发中,时常会用到javascript来获取当前页面的url网址信息,在这里是我的一些获取url信息的小总结. 下面我们举例一个URL,然后获得它的各个组成部分:http://i.cnblog ...