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

  • 操作便捷:开发人员不需要再使用复杂的驱动器调用命令和函数;
  • 可移植性强:JDBC支持不同的关系数据库
  • 通用性好:JDBC-ODBC桥接驱动器将JDBC函数换成ODBC;
  • 面向对象:可以将常用的JDBC数据库连接封装成一个类,在使用的时候直接调用即可
  1. package DAO;
  2.  
  3. import java.sql.Connection;
  4. import java.sql.DriverManager;
  5. import java.sql.PreparedStatement;
  6. import java.sql.ResultSet;
  7. import java.sql.ResultSetMetaData;
  8. import java.sql.SQLException;
  9. import java.util.ArrayList;
  10. import java.util.Collections;
  11. import java.util.HashMap;
  12. import java.util.List;
  13. import java.util.Map;
  14.  
  15. import com.mysql.jdbc.Statement;
  16.  
  17. public class JDBC {
  18. protected Connection conn;
  19. protected Statement statement;
  20.  
  21. public static Connection getConnection() throws Exception {
  22. Connection connection = null; // 创建用于连接数据库的Connection对象
  23. try {
  24. Class.forName("com.mysql.jdbc.Driver");// 加载Mysql数据驱动
  25. /**
  26. * 127.0.0.1指本机,若是链接远程服务机器,则填写远程机器的ip 3306 mysql默认的端口号 test 数据库名称
  27. * user 数据库用户名称 password 密码
  28. */
  29. connection = DriverManager.getConnection(
  30. "jdbc:mysql://127.0.0.1:3306/test", "user", "password");// 创建数据连接
  31.  
  32. } catch (Exception e) {
  33. e.printStackTrace();
  34. throw new Exception("链接mysql数据失败");
  35. }
  36. return connection; // 返回所建立的数据库连接
  37. }
  38.  
  39. /**
  40. * 向mysql插入数据记录 返回插入数据的个数
  41. *
  42. * @param sql
  43. * 要插入的sql语句
  44. * @return count 插入数据的个数
  45. * @throws Exception
  46. */
  47. public int insert(String sql) throws Exception {
  48. conn = getConnection(); // 连接到数据库
  49. try {
  50. statement = (Statement) conn.createStatement(); // 创建用于执行静态sql语句的Statement对象
  51. int count = statement.executeUpdate(sql); // 执行插入操作的sql语句
  52. conn.close(); // 关闭数据库连接
  53. return count;// 返回插入数据的个数
  54. } catch (SQLException e) {
  55. e.printStackTrace();
  56. throw new Exception("插入数据失败");
  57. }
  58. }
  59.  
  60. /**
  61. * 更新符合要求的记录 返回更新的记录数目
  62. *
  63. * @param sql
  64. * 更新数据的sql语句
  65. * @return count 更新数据的个数
  66. * @throws Exception
  67. */
  68. public int update(String sql) throws Exception {
  69. conn = getConnection(); // 连接到数据库
  70. try {
  71. // 创建用于执行静态sql语句的Statement对象,
  72. statement = (Statement) conn.createStatement();
  73. int count = statement.executeUpdate(sql);// 执行更新操作的sql语句,
  74. conn.close(); // 关闭数据库连接
  75. return count; // 返回更新数据的个数
  76. } catch (SQLException e) {
  77. e.printStackTrace();
  78. throw new Exception("更新数据失败");
  79. }
  80. }
  81.  
  82. /**
  83. * 查询数据库,返回符合要求的记录的数据
  84. *
  85. * @param sql 查询数据的sql语句
  86. * @throws Exception
  87. * @return list
  88. */
  89. public List<Object> query(String sql) throws Exception {
  90.  
  91. conn = getConnection(); // 连接到数据库
  92. try {
  93. statement = (Statement) conn.createStatement(); // 创建用于执行静态sql语句的Statement对象
  94. ResultSet rs = statement.executeQuery(sql); // 执行sql查询语句,返回查询数据的结果集
  95. List<Object> list=ResultSetToList(rs);
  96. conn.close(); // 关闭数据库连接
  97. return list;
  98.  
  99. } catch (SQLException e) {
  100. e.printStackTrace();
  101. throw new Exception("查询数据失败");
  102. }
  103. }
  104. /* 删除符合要求的记录,输出情况*/
  105. /**
  106. *
  107. * @param sql 删除数据的sql语句
  108. * @return count 返回删除数据的数量
  109. * @throws Exception
  110. */
  111. public int delete(String sql) throws Exception {
  112. conn = getConnection(); //连接到数据库
  113. try {
  114. statement = (Statement) conn.createStatement(); //创建用于执行静态sql语句的Statement对象
  115. int count = statement.executeUpdate(sql);// 执行sql删除语句
  116. conn.close(); //关闭数据库连接
  117. return count;//返回删除数据的数量
  118. } catch (SQLException e) {
  119. e.printStackTrace();
  120. throw new Exception("删除数据失败");
  121. }
  122.  
  123. }
  124. /**
  125. * 分页查找
  126. * @param sql 要查找的sql语句
  127. * @param page 页数
  128. * @param count 数据条数
  129. * @return List<Object>
  130. * @throws Exception
  131. */
  132. public List<Object> findByPage(String sql,
  133. int page,int count) throws Exception {
  134. conn = getConnection(); //连接到数据库
  135. PreparedStatement pre = conn.prepareStatement(sql);
  136. pre.setMaxRows(count);
  137. ResultSet rs = pre.executeQuery();
  138. if(page<1){
  139. rs.absolute(0);
  140. }else{
  141. page=page*count-1;
  142. rs.absolute(page);
  143. }
  144. List<Object> list=ResultSetToList(rs);
  145. return list;
  146. }
  147. /**
  148. * ResultSet 转换成List
  149. */
  150. public List<Object> ResultSetToList(ResultSet rs) throws SQLException{
  151. if (rs == null)
  152. return Collections.emptyList();
  153. ResultSetMetaData md = rs.getMetaData(); // 得到结果集(rs)的结构信息
  154. int columnCount = md.getColumnCount(); // 返回此 ResultSet 对象中的列数
  155. List<Object> list = new ArrayList<Object>();
  156. Map<Object, Object> rowData = new HashMap<Object, Object>();
  157. while (rs.next()) {
  158. rowData = new HashMap<Object, Object>(columnCount);
  159. for (int i = 1; i <= columnCount; i++) {
  160. rowData.put(md.getColumnName(i), rs.getObject(i));
  161. }
  162. list.add(rowData);
  163. }
  164. return list;
  165. }
  166.  
  167. }

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. UVaLive 6694 Toy Boxes (二分+想法)

    题意:给出n个数,把n个数放在三个盒子里,每个盒子里的数绑在一起,要拿出来任何一个数的时候,所承担的重量是整个盒子的总重量,求最小总重量和. 析:感觉吧,就是轻的放的多一些,拿的次数多一些,大的放的少 ...

  2. UI进阶 科大讯飞(2) 语音合成(文字转换成语音)

    科大讯飞开放平台.SDK下载.添加静态库.初始化见UI进阶 科大讯飞(1) 语音听写(语音转换成文字) 实现语音合成 功能实现步骤: 导入头文件 创建文字识别对象 指定文字识别后的回调代理对象 开启文 ...

  3. 【转】2D动画:view的Matrix

    Matrix,中文里叫矩阵,高等数学里有介绍,在图像处理方面,主要是用于平面的缩放.平移.旋转等操作. 首先介绍一下矩阵运算.加法和减法就不用说了,太简单了,对应位相加就好.图像处理,主要用到的是乘法 ...

  4. (剑指Offer)面试题26:复杂链表的复制

    题目: 请实现函数ComplexListNode* Clone(ComplexListNode* pHead),复制一个复杂链表. 在复杂链表中,每个结点除了有一个pNext指针指向下一个结点之外,还 ...

  5. HttpRuntime.Cache 失效

    最近做一个报纸内容类网站,为了提高响应速度,将首页各栏目以及二级栏目中Part文献列表存储在HttpRuntime.Cache缓存中,发布后发现问题,刚插入的缓存很快就失效,本机调试没有问题. 由于H ...

  6. Codeforces Round #188 (Div. 1) B. Ants 暴力

    B. Ants Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/317/problem/B Des ...

  7. 50个Android开发人员必备UI效果源码[转载]

    50个Android开发人员必备UI效果源码[转载] http://blog.csdn.net/qq1059458376/article/details/8145497 Android 仿微信之主页面 ...

  8. onConfigurationChanged is not called&& 翻转屏幕不执行onConfigurationChanged方法&&onConfigurationChanged不执行

    我总结出一句话: 如果target sdk>=13,必须使用如下方式声明activity:android:configChanges="orientation|screenSize&q ...

  9. java最简单的方式实现httpget和httppost请求

    java实现httpget和httppost请求的方式多种多样,个人总结了一种最简单的方式,仅仅需几行代码,就能够完美的实现. 此处须要用到两个jar包,httpclient-4.3.1.jar.ht ...

  10. Docker大行其道—镜像

    导读 作为Docker三大核心概念之一,Docker镜像(Docker Image)是一个面向Docker引擎的只读模板,包含文件系统.实际上每个Docker镜像包含一个独立的运行环境,如一个镜像包含 ...