Android 之JDBC

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

时间: 2024-11-24 21:41:20

Android 之JDBC的相关文章

Android 服务器jdbc连接错误

============问题描述============ 服务器端用jdbc连接数据库,结果出现这样的错误: org.apache.catalina.core.StandardWrapperValve invoke ??: Servlet.service() for servlet [LoginServlet] in context with path [/BBStuServlet] threw exception java.lang.NullPointerException at com.ro

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

在使用JDBC编程时需要连接数据库,导入JAR包是必须的,导入其它的jar包方法同样如此,导入的方法是 打开eclipse 1.右击要导入jar包的项目,点properties 2.左边选择java build path,右边选择libraries 3.选择add External jars 4.选择jar包的按照路径下的确定后就行了. Java连接MySQL的最新驱动包下载地址 http://www.mysql.com/downloads/connector/j 安卓源码有两种方法导入jar包

数据库: Android使用JDBC连接数据库实现增 删 该 查 操作(5.0版本)

前言 上一节的代码没有测试通过,暂时没有找到问题,这节咱用5.0的jar包 配置数据库,导入jar包参考上一节(导入这节的jar包) 准备好测试的数据库 IP: 47.92.31.46 用户名: yang 密码:    11223344. 数据库名字 :  databasetest 表格:  userinfo 这是我云端电脑安装的数据库,大家都可以连接测试 我设置了权限,只可以增删改查数据 加载mysql驱动 Class.forName("com.mysql.jdbc.Driver")

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

JDBC为java程序访问各种类型的关系型数据库提供了统一的接口,用户不必针对不同数据库写出不同的代码,但是使用JDBC必须得下载相应的驱动,比如我这里是要连接mysql,于是就到mysql官网去下载x相应驱动 https://dev.mysql.com/downloads/connector/j/ 这里我下载解压得到 mysql-connector-java-5.1.43-bin.jar 在Eclipse中新建java项目只需要Build Path --> Add External Archi

Android数据库:通过JDBC直接访问MySql

关于通过JDBC访问本地MySql数据库的一篇文章http://blog.csdn.net/leelit/article/details/41044187,昨天学完JDBC访问本地数据库后就想,怎样可以远程访问数据库,真正使其成为一个服务器.后面又联想起自己之间做的一个单机版外卖订餐App,如果可以使其通过数据库来维护,那才是一款真正有意义的App.后面又搜了一下远程访问数据库的方法很快就找到了答案:http://www.cnblogs.com/xd502djj/archive/2011/04/

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

1.设置白名单,获取外网连接地址 外部设备要访问阿里云MySQL数据库,则需要设置白名单,具体操作链接: https://help.aliyun.com/document_detail/43185.html?spm=a2c4g.11186623.2.14.d8c4110bf110vr#concept-pdr-k2f-vdb 设置白名单,再获取外网连接地址 2. 配置JDBC 配置JDBC的时候的时候将外网地址替换称IP地址即可. 外网连接地址类似:rdssoxxxxxxxxx.mysql.rds

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

工具:mysql-connector-java-5.1.48.jar,mysql version 5.6.19,android studio内置模拟器 1.connection import java.sql.DriverManager interface Connection { fun init(){ var driver="com.mysql.jdbc.Driver" var url="jdbc:mysql://10.0.2.2:3306/test" var

android jdbc 数据库连接错误解决方案

今天用Eclipse突然在控制台出现如下错误,没有办法运行程序: [plain] view plaincopyprint? Invalid layout of java.lang.String at value A fatal error has been detected by the Java Runtime Environment: Internal Error (javaClasses.cpp:129), pid=15238, tid=140306591237888 fatal erro

优秀的 Android 开源项目

摘要  转载http://www.trinea.cn/android/android-open-source-projects-view/,方便大家找到自己合适的资料 目录[-] 一.ListView 二.ActionBar 三.Menu 四.ViewPager .Gallery 五.GridView 六.ImageView 七.ProgressBar 八.其他 GitHub上优秀Android开源项目 3. Android开发神器 1.Xabber客户端 2.oschina客户端 3.手机安全