JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC为数据库开发人员提供了一个标准的API,使数据库开发人员能够用纯 Java API 编写数据库应用程序,并且可跨平台运行,并且不受数据库供应商的限制。其优点:

  • 操作便捷:开发人员不需要再使用复杂的驱动器调用命令和函数;
  • 可移植性强:JDBC支持不同的关系数据库
  • 通用性好:JDBC-ODBC桥接驱动器将JDBC函数换成ODBC;
  • 面向对象:可以将常用的JDBC数据库连接封装成一个类,在使用的时候直接调用即可
package DAO;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map; import com.mysql.jdbc.Statement; public class JDBC {
protected Connection conn;
protected Statement statement; public static Connection getConnection() throws Exception {
Connection connection = null; // 创建用于连接数据库的Connection对象
try {
Class.forName("com.mysql.jdbc.Driver");// 加载Mysql数据驱动
/**
* 127.0.0.1指本机,若是链接远程服务机器,则填写远程机器的ip 3306 mysql默认的端口号 test 数据库名称
* user 数据库用户名称 password 密码
*/
connection = DriverManager.getConnection(
"jdbc:mysql://127.0.0.1:3306/test", "user", "password");// 创建数据连接 } catch (Exception e) {
e.printStackTrace();
throw new Exception("链接mysql数据失败");
}
return connection; // 返回所建立的数据库连接
} /**
* 向mysql插入数据记录 返回插入数据的个数
*
* @param sql
* 要插入的sql语句
* @return count 插入数据的个数
* @throws Exception
*/
public int insert(String sql) throws Exception {
conn = getConnection(); // 连接到数据库
try {
statement = (Statement) conn.createStatement(); // 创建用于执行静态sql语句的Statement对象
int count = statement.executeUpdate(sql); // 执行插入操作的sql语句
conn.close(); // 关闭数据库连接
return count;// 返回插入数据的个数
} catch (SQLException e) {
e.printStackTrace();
throw new Exception("插入数据失败");
}
} /**
* 更新符合要求的记录 返回更新的记录数目
*
* @param sql
* 更新数据的sql语句
* @return count 更新数据的个数
* @throws Exception
*/
public int update(String sql) throws Exception {
conn = getConnection(); // 连接到数据库
try {
// 创建用于执行静态sql语句的Statement对象,
statement = (Statement) conn.createStatement();
int count = statement.executeUpdate(sql);// 执行更新操作的sql语句,
conn.close(); // 关闭数据库连接
return count; // 返回更新数据的个数
} catch (SQLException e) {
e.printStackTrace();
throw new Exception("更新数据失败");
}
} /**
* 查询数据库,返回符合要求的记录的数据
*
* @param sql 查询数据的sql语句
* @throws Exception
* @return list
*/
public List<Object> query(String sql) throws Exception { conn = getConnection(); // 连接到数据库
try {
statement = (Statement) conn.createStatement(); // 创建用于执行静态sql语句的Statement对象
ResultSet rs = statement.executeQuery(sql); // 执行sql查询语句,返回查询数据的结果集
List<Object> list=ResultSetToList(rs);
conn.close(); // 关闭数据库连接
return list; } catch (SQLException e) {
e.printStackTrace();
throw new Exception("查询数据失败");
}
}
/* 删除符合要求的记录,输出情况*/
/**
*
* @param sql 删除数据的sql语句
* @return count 返回删除数据的数量
* @throws Exception
*/
public int delete(String sql) throws Exception {
conn = getConnection(); //连接到数据库
try {
statement = (Statement) conn.createStatement(); //创建用于执行静态sql语句的Statement对象
int count = statement.executeUpdate(sql);// 执行sql删除语句
conn.close(); //关闭数据库连接
return count;//返回删除数据的数量
} catch (SQLException e) {
e.printStackTrace();
throw new Exception("删除数据失败");
} }
/**
* 分页查找
* @param sql 要查找的sql语句
* @param page 页数
* @param count 数据条数
* @return List<Object>
* @throws Exception
*/
public List<Object> findByPage(String sql,
int page,int count) throws Exception {
conn = getConnection(); //连接到数据库
PreparedStatement pre = conn.prepareStatement(sql);
pre.setMaxRows(count);
ResultSet rs = pre.executeQuery();
if(page<1){
rs.absolute(0);
}else{
page=page*count-1;
rs.absolute(page);
}
List<Object> list=ResultSetToList(rs);
return list;
}
/**
* ResultSet 转换成List
*/
public List<Object> ResultSetToList(ResultSet rs) throws SQLException{
if (rs == null)
return Collections.emptyList();
ResultSetMetaData md = rs.getMetaData(); // 得到结果集(rs)的结构信息
int columnCount = md.getColumnCount(); // 返回此 ResultSet 对象中的列数
List<Object> list = new ArrayList<Object>();
Map<Object, Object> rowData = new HashMap<Object, Object>();
while (rs.next()) {
rowData = new HashMap<Object, Object>(columnCount);
for (int i = 1; i <= columnCount; i++) {
rowData.put(md.getColumnName(i), rs.getObject(i));
}
list.add(rowData);
}
return list;
} }

java jdbc连接mysql的更多相关文章

  1. java jdbc 连接mysql数据库 实现增删改查

    好久没有写博文了,写个简单的东西热热身,分享给大家. jdbc相信大家都不陌生,只要是个搞java的,最初接触j2ee的时候都是要学习这么个东西的,谁叫程序得和数据库打交道呢!而jdbc就是和数据库打 ...

  2. java jdbc 连接mysql 数据库

    JDBC连接MySQL 加载及注册JDBC驱动程序 Class.forName("com.mysql.jdbc.Driver"); Class.forName("com. ...

  3. 【Java】JDBC连接MySQL

    JDBC连接MySQL 虽然在项目中通常用ORM的框架实现持久化.但经常因测试某些技术的需要,要写一个完整的JDBC查询数据库.写一个在这儿备份. 首先引入驱动包: <dependencies& ...

  4. JAVA使用jdbc连接MYSQL简单示例

    以下展示的为JAVA使用jdbc连接MYSQL简单示例: import java.sql.DriverManager; import java.sql.ResultSet; import java.s ...

  5. java用JDBC连接MySQL数据库的详细知识点

    想实现java用JDBC连接MySQL数据库.需要有几个准备工作: 1.下载Connector/J的库文件,下载Connector/J的官网地址:http://www.mysql.com/downlo ...

  6. Java编程学习之JDBC连接MySQL

    JDBC连接MySQL 一.对JDBC连接数据库的步骤1.加载数据库驱动//加载驱动Class.forName(driverClass)-------------------------------- ...

  7. (Win10)Java,Maven,Tomcat8.0,Mysql8.0.15安装与环境配置,以及IDEA2019.3使用JDBC连接MySQL、创建JavaEE项目

    之前用windows+linux的双系统,最近不怎么舒服就把双系统给卸了,没想到除了问题,导致有linux残余,于是就一狠心重装了电脑,又把Java及其相关的一些东西重新装了回来,还好当初存了网盘链接 ...

  8. ava基础MySQL存储过程 Java基础 JDBC连接MySQL数据库

    1.MySQL存储过程   1.1.什么是存储过程 带有逻辑的sql语句:带有流程控制语句(if  while)等等 的sql语句   1.2.存储过程的特点 1)执行效率非常快,存储过程是数据库的服 ...

  9. JDBC连接MySQL数据库代码模板

    下面这个例子是最简单的JDBC连接MySQL数据库的例子. 一般步骤: 1.注册驱动: 2.建立连接: 3.创建语句: 4.处理结果: 5.释放资源. 注意: 1.软件开发环境:MyEclipse 8 ...

随机推荐

  1. HDU4513吉哥系列故事――完美队形II(manacher算法)

    这个比最长回文子串就多了一个条件,就是回文字串(这里相当于人的高度)由两端向中间递增. 才刚刚看了看manacher,在用模板A了一道题后,还没有完全理解manacher,然后就准备把这道题也直接带模 ...

  2. HDU 5437 Alisha’s Party (优先队列模拟)

    题意:邀请k个朋友,每个朋友带有礼物价值不一,m次开门,每次开门让一定人数p(如果门外人数少于p,全都进去)进来,当最后所有人都到了还会再开一次门,让还没进来的人进来,每次都是礼物价值高的人先进.最后 ...

  3. [MySQL] 字符集和排序方式

    字符串类型 MySQL的字符串分为两大类: 1)二进制字符串:即一串字节序列,对字节的解释不涉及字符集,因此它没有字符集和排序方式的概念 2)非二进制字符串:由字符构成的序列,字符集用来解释字符串的内 ...

  4. 记一次PHP项目部署过程

    首先介绍一下项目的基本情况:使用PHP语言开发,数据库用的是MySQL 5.5,HTTP服务器用的是Apache 2.2.早上十点到机房看了看服务器的基本情况:Windows 2000操作系统,没有安 ...

  5. C++ Vector 使用心得 [转]

    标准库Vector类型 使用需要的头文件:#include <vector>Vector:Vector 是一个类模板.不是一种数据类型. Vector<int>是一种数据类型. ...

  6. linux的webserver配置与管理——创建用户个人主页

    本实验用的是RedHat linux9.0,在虚拟机上进行操作,它已具有相当完好的可视化界面,这样用户会更加easy接受和理解. 首先呢就是虚拟机的相关配置,这个就不说了,当我们安装完系统后,打开终端 ...

  7. 使用命令行工具将Android应用转换成BlackBerry PlayBook应用

    昨天写了篇文章关于Android应用转换的,通过BlackBerry的在线转换工具将Android应用转换成BlackBerry PlayBook应用.有网友反映说方法有点麻烦,所以今天补上新的转换方 ...

  8. iOS开发——实战OC篇&环境搭建之纯代码(玩转UINavigationController与UITabBarController)

    iOS开发——实战OC篇&环境搭建之纯代码(玩转UINavigationController与UITabBarController)   这里我们就直接上实例: 一:新建一个项目singleV ...

  9. Linux 下配置网卡的别名即网卡子IP的配置 转

    what 什么是ip别名?用windows的话说,就是为一个网卡配置多个ip.when 什么场合增加ip别名能派上用场?布网需要.多ip访问测试.特定软件对多ip的需要...and so on. ho ...

  10. 信号之sigaction函数

    sigaction函数的功能是检查或修改与指定信号相关联的处理动作(或同时执行这两种操作). #include <signal.h> int sigaction( int signo, c ...