JDBC(Java DataBase Connectivity)是使用 Java 存取数据库系统的标准解决方案,它将不同数据库间各自差异API与标准 SQL语句分开看待,实现数据库无关的 Java操作接口。

JDBC程序访问数据库的步骤 

步骤一:加载JDBC驱动程序:Class.forName("com.mysql.jdbc.Driver");Oracle10g:oracle.jdbc.driver.OracleDriver;MySQL5:com.mysql.jdbc.Driver;SQLServer2005:com.microsoft.sqlserver.jdbc.SQLServerDriver
步骤二:提供连接参数:URL,USERNAME, PASSWORD:不同数据库产品的连接URL不同
Oracle10g:jdbc:oracle:thin:@主机名:端口:数据库SID

jdbc:oracle:thin:@localhost:1521:ORCL
MySQL5:jdbc:mysql://主机名:端口/数据库名
jdbc:mysql://localhost:3306/test       
SQLServer2005:jdbc:sqlserver://主机名:端口:DatabaseName=库名
jdbc:sqlserver://localhost:1433:DatabaseName=BookDB
步骤三:建立一个数据库的连接:connection=DriverManager.getConnection(URL,USERNAME, PASSWORD);
步骤四:创建一个statement:preparedStatement=connection.prepareStatement(sql);
步骤五:执行SQL语句:result=preparedStatement.executeUpdate();
步骤六:处理结果:flag=result>0?true:false;return flag;
步骤七:关闭JDBC对象:if(resultSet!=null){resultSet.close();}if(preparedStatement!=null){preparedStatement.close();}if(connection!=null){connection.close();}
  1. package com.jdbc.dbUtils;
  2.  
  3. import java.lang.reflect.Field;
  4. import java.sql.Connection;
  5. import java.sql.DriverManager;
  6. import java.sql.PreparedStatement;
  7. import java.sql.ResultSet;
  8. import java.sql.ResultSetMetaData;
  9. import java.sql.SQLException;
  10. import java.util.ArrayList;
  11. import java.util.HashMap;
  12. import java.util.List;
  13. import java.util.Map;
  14.  
  15. import com.jdbc.dbUtils.dormain.UserInfo;
  16.  
  17. public class JDBCutils {
  18.  
  19. private final String USERNAME="root";
  20. private final String PASSWORD="admin";
  21. private final String DRIVER="com.mysql.jdbc.Driver";
  22. private final String URL="jdbc:mysql://localhost:3306/mydb";
  23.  
  24. private Connection connection;
  25. private PreparedStatement preparedStatement;
  26. private ResultSet resultSet;
  27.  
  28. public JDBCutils() {
  29. try {
  30. Class.forName(DRIVER);//注册驱动
  31. System.out.println("成功注册驱动");
  32.  
  33. } catch (Exception e) {
  34. // TODO: handle exception
  35. }
  36. }
  37.  
  38. public Connection getConnection(){
  39. try {
  40. connection=DriverManager.getConnection(URL,USERNAME, PASSWORD);
  41. } catch (Exception e) {
  42. // TODO: handle exception
  43. e.printStackTrace();
  44. }
  45. return connection;
  46. }
  47. //增删改
  48. public boolean updateByPreparedStatement(String sql,List<Object> params)throws SQLException {
  49. boolean flag=false;
  50. int result=-;//执行增删改操作的时候所影响的行数
  51. int index=;//占位符的第一个位置
  52. preparedStatement=connection.prepareStatement(sql);
  53. if(params!=null&&!params.isEmpty()){
  54. for (int i = ; i < params.size(); i++) {
  55. preparedStatement.setObject(index++, params.get(i));
  56. }
  57. }
  58. result=preparedStatement.executeUpdate();
  59. flag=result>?true:false;
  60. return flag;
  61. }
  62. //查询 返回单条记录
  63. public Map<String,Object> findSimpleResult(String sql,List<Object> params) throws SQLException{
  64. Map<String,Object> map=new HashMap<String,Object>();
  65. int index=;//占位符的第一个位置
  66. preparedStatement=connection.prepareStatement(sql);
  67. if(params!=null&&!params.isEmpty()){
  68. for (int i = ; i < params.size(); i++) {
  69. preparedStatement.setObject(index++, params.get(i));
  70. }
  71. }
  72. resultSet=preparedStatement.executeQuery();
  73. ResultSetMetaData resultSetMetaData=resultSet.getMetaData();
  74. int col_len=resultSetMetaData.getColumnCount();//得到数据库表的列
  75. while(resultSet.next()){
  76. for (int i = ; i < col_len; i++) {
  77. String col_name=resultSetMetaData.getColumnName(i+);
  78. Object col_val=resultSet.getObject(col_name);
  79. if(col_val==null){
  80. col_val="";
  81. }
  82. map.put(col_name,col_val);
  83. }
  84. }
  85. return map;
  86.  
  87. }
  88. //查询 返回多条记录
  89. public List<Map<String,Object>> findMultiResult(String sql,List<Object> params) throws SQLException{
  90. List<Map<String,Object>> list=new ArrayList<Map<String,Object>>();
  91. int index=;//占位符的第一个位置
  92. preparedStatement=connection.prepareStatement(sql);
  93. if(params!=null&&!params.isEmpty()){
  94. for (int i = ; i < params.size(); i++) {
  95. preparedStatement.setObject(index++, params.get(i));
  96. }
  97. }
  98. resultSet=preparedStatement.executeQuery();
  99. ResultSetMetaData resultSetMetaData=resultSet.getMetaData();
  100. int col_len=resultSetMetaData.getColumnCount();//得到数据库表的列名
  101. while(resultSet.next()){
  102. Map<String,Object>map=new HashMap<String,Object>();
  103. for (int i = ; i < col_len; i++) {
  104. String col_name=resultSetMetaData.getColumnName(i+);
  105. Object col_val=resultSet.getObject(col_name);
  106. if(col_val==null){
  107. col_val="";
  108. }
  109. map.put(col_name,col_val);
  110. }
  111. list.add(map);
  112. }
  113. return list;
  114.  
  115. }
  116. //jdbc的封装也可以采用反射机制
  117. public <T> T findSimpReflectResult(String sql,List<Object> params,Class<T> cls) throws Exception{
  118. T resObj=null;
  119. int index=;//占位符的第一个位置
  120. preparedStatement=connection.prepareStatement(sql);
  121. if(params!=null&&!params.isEmpty()){
  122. for (int i = ; i < params.size(); i++) {
  123. preparedStatement.setObject(index++, params.get(i));
  124. }
  125. }
  126. resultSet=preparedStatement.executeQuery();
  127. ResultSetMetaData resultSetMetaData=resultSet.getMetaData();
  128. int col_len=resultSetMetaData.getColumnCount();//得到数据库表的列名
  129. while(resultSet.next()){
  130. resObj=cls.newInstance();//通过反射机制创建实例
  131. for (int i = ; i < col_len; i++) {
  132. String col_name=resultSetMetaData.getColumnName(i+);
  133. Object col_val=resultSet.getObject(col_name);
  134. if(col_val==null){
  135. col_val="";
  136. }
  137. Field field=cls.getDeclaredField(col_name);
  138. field.setAccessible(true);//打开访问javabean的私有权限
  139. field.set(resObj, col_val);
  140. }
  141. }
  142. return resObj;
  143. }
  144. public <T> List<T> findMultiReflectResult(String sql,List<Object> params,Class<T> cls) throws Exception{
  145. List<T> list=new ArrayList<T>();
  146. int index=;//占位符的第一个位置
  147. preparedStatement=connection.prepareStatement(sql);
  148. if(params!=null&&!params.isEmpty()){
  149. for (int i = ; i < params.size(); i++) {
  150. preparedStatement.setObject(index++, params.get(i));
  151. }
  152. }
  153. resultSet=preparedStatement.executeQuery();
  154. ResultSetMetaData resultSetMetaData=resultSet.getMetaData();
  155. int col_len=resultSetMetaData.getColumnCount();//得到数据库表的列名
  156. while(resultSet.next()){
  157. T resObj=cls.newInstance();//通过反射机制创建实例
  158. for (int i = ; i < col_len; i++) {
  159. String col_name=resultSetMetaData.getColumnName(i+);
  160. Object col_val=resultSet.getObject(col_name);
  161. if(col_val==null){
  162. col_val="";
  163. }
  164. Field field=cls.getDeclaredField(col_name);
  165. field.setAccessible(true);//打开访问javabean的私有权限
  166. field.set(resObj, col_val);
  167. }
  168. list.add(resObj);
  169. }
  170. return list;
  171. }
  172. public void releaseConnection() throws SQLException{
  173. if(resultSet!=null){
  174. resultSet.close();
  175. }
  176. if(preparedStatement!=null){
  177. preparedStatement.close();
  178. }
  179. if(connection!=null){
  180. connection.close();
  181. }
  182. }
  183. public static void main(String[] args) throws Exception {
  184. // TODO Auto-generated method stub
  185. JDBCutils jdbc=new JDBCutils();
  186. jdbc.getConnection();
  187. List<Object> params=new ArrayList<Object>();
  188.  
  189. /* params.add("fjf");
  190. params.add("123");
  191. params.add("fanjingfang");
  192. String sql="insert into userinfo(username,password,realname)values(?,?,?)";
  193. boolean flag=jdbc.updateByPreparedStatement(sql, params);
  194. System.out.println(flag);
  195. params.add(1);
  196. String sql="select * from userinfo where id=?";
  197. Map<String,Object> m=jdbc.findSimpleResult(sql, params);
  198. System.out.println(m);*/
  199.  
  200. /*String sql2="select * from userinfo ";
  201. List<Map<String,Object>> list=jdbc.findMultiResult(sql2, null);
  202. System.out.println(list);*/
  203.  
  204. /* params.add(1);
  205. String sql3="select * from userinfo where id=? ";
  206. UserInfo u=jdbc.findSimpReflectResult(sql3, params,UserInfo.class);
  207. System.out.println(u);*/
  208.  
  209. String sql4="select * from userinfo ";
  210. List<UserInfo> list=jdbc.findMultiReflectResult(sql4, null,UserInfo.class);
  211. System.out.println(list);
  212. }
  213.  
  214. }
 

Android 之JDBC的更多相关文章

  1. Android开发JDBC连接mysql数据库导入驱动方法

    在使用JDBC编程时需要连接数据库,导入JAR包是必须的,导入其它的jar包方法同样如此,导入的方法是 打开eclipse 1.右击要导入jar包的项目,点properties 2.左边选择java ...

  2. Android使用JDBC连接数据库

    连接数据库是安卓开发中几乎不可避免的一项工作,稍有规模的应用通常都需要使用数据库来存储用户数据.对于本地数据库当然可以使用sqlite,而对于多用户线上应用,则一般需要配备云端数据库.其中比较常用且开 ...

  3. 13--网页,网站,微信公众号基础入门(PHP获取网页的get请求)

    https://www.cnblogs.com/yangfengwu/p/11148976.html 大家在访问网页的时候有没有注意一件事情 现在咱来看这种哈 现在咱做个功能哈,类似于这样 长话短说 ...

  4. Android学习笔记————利用JDBC连接服务器数据库

    /******************************************************************************************** * auth ...

  5. Android Studio使用JDBC远程连接mysql的注意事项(附示例)

    JDBC为java程序访问各种类型的关系型数据库提供了统一的接口,用户不必针对不同数据库写出不同的代码,但是使用JDBC必须得下载相应的驱动,比如我这里是要连接mysql,于是就到mysql官网去下载 ...

  6. android连接Mysql数据库之JDBC方式

    一.创建一个数据库和若干表,并导入相关信息.这里以我之前使用的一个图书系统的数据库为例子. 首先假设已经安装并配置好Mysql.(建议大家安装WAMP,也就是安装完这个,就相当于安装了Mysql,PH ...

  7. Android应用通过JDBC直连阿里云MySQL数据库

    1.设置白名单,获取外网连接地址 外部设备要访问阿里云MySQL数据库,则需要设置白名单,具体操作链接: https://help.aliyun.com/document_detail/43185.h ...

  8. JDBC<android studio,kotlin>

    工具:mysql 5.6.19,mysql-connector-java-5.1.48.jar,android stuido&android studio自带模拟器 1.在mysql数据库中新 ...

  9. android studio使用JDBC访问mysql数据库(Kotlin方法)

    工具:mysql-connector-java-5.1.48.jar,mysql version 5.6.19,android studio内置模拟器 1.connection import java ...

随机推荐

  1. 使用build_opener 自定义 opener

    使用build_opener 自定义 opener,这种方法的好处是可以方便的拓展功能. import urllib.request import http.cookiejar def makeMyO ...

  2. 简单利用HTTP中的PUT协议拿下SHELL

    第一次用方法拿shell,之前遇到的都是没有写入权限的. 站太辣鸡,纯粹练手,就不打码了. 此次实战会用到的HTTP请求方法: OPTIONS,PUT,MOVE/COPPY * 战前准备 0x01 什 ...

  3. Day4 - Linux分区规划与xshell使用排错

    1.1 没有重要数据 /boot   200M    存放系统的引导信息 内核 swap   交换分区   防止内存用光了 临时的一个内存 如果你的内存小于8G swap是内存的1.5倍   如果你的 ...

  4. Linux平台 Oracle 12cR2 RAC安装Part1:准备工作

    Linux平台 Oracle 12cR2 RAC安装Part1:准备工作 一.实施前期准备工作 1.1 服务器安装操作系统 1.2 Oracle安装介质 1.3 共享存储规划 1.4 网络规范分配 二 ...

  5. 用JS制作一个信息管理平台

    首先,介绍一些需要用到的基本知识. [JSON] JSON是数据交互中,最常用的一种数据格式. 由于各种语言的语法都不相同,在传递数据时,可以将自己语言中的数组.对象等转换为JSON字符串. 传递之后 ...

  6. Linux的学习笔记_Day1

    为什么要开始学习Linux命令? 首先当然是因为工作需要了,现在的工作是负责银行调度的系统的源系统接入的工作,经常要到生产部署版本.所以--买了一本<Linux命令行与shell脚本编程大全&g ...

  7. css中使用变量

    2017年3月,微软宣布 Edge 浏览器将支持 CSS 变量.这个重要的 CSS 新功能,所有主要浏览器已经都支持了. 声明css变量的时候,变量名前面要加两根连词线(--).变量名大小写敏感,-- ...

  8. html加载和解析流程

    之前查找资料了解了html的整个渲染过程,对于理解页面加载帮助还是蛮大的,下面我用visio把它画成流程图,便于直观理解 好吧,居然要150字才能发布............ 浏览器渲染过程 浏览器渲 ...

  9. SNS团队第七次站立会议(2017.04.28)

    一.当天站立式会议照片 本次会议主要内容:汇报工作进度,根据完成情况调整进度 二.每个人的工作 成员 今天已完成的工作 明天计划完成的工作 罗于婕 导入相关词库数据  研究如何存取语音.图片文件 龚晓 ...

  10. 201521123082 《Java程序设计》第1周学习总结

    201521123082 <Java程序设计>第1周学习总结 标签(空格分隔): Java 1. 本周学习总结 0.初步了解Java语言及其发展历史和过程,同时也初步了解了Java具有跨平 ...