Android:数据库操作

23.3 JDBC直连数据库的实现

         Android的JDBC开发与普通java程序的JDBC开发一样,在编码时,程序利用JDBC的API(java.sql.*)来和数据库交互,针对不同的DBMS,只需加载对应的driver和使用不同的链接字符串即可。

         开发时针对不同的DBMS数据库需要有对应的DBMS的驱动jar包才行,jar包在DBMS的官网可下载,下载后需要注意附带的说明文档,里面详细介绍了使用方法和注意事项(主要看驱动字符串和连接字符串的配置和适合的jdk版本)。实际的开发过程中,用到的jar包不一定最新的才行,有时最新的反而会报错,mysql的驱动采用mysql-connector-java-3.0.17-ga-bin.jar时才行,其它版本编译时会出现警告,最新版本引入包后会直接报错。Sql server的jar包使用最新的没有问题,旧版本的包反而会编译时报出警告。Sql  Anywhere 10提供有JODBC.JAR但是只能是java通过odbc的方式连接,不适合android,适合android的是jconn3.jar。

         总之一句话,直连开发首先是找到DBMS的jdbc驱动jar包(合适的,不一定是最新的,靠摸索排查),并在项目引入驱动jar包,然后就可以开始jdbc编码,编码和普通的java jdbc编码代码一致,可以参考java.sql.*下的相关API,需要注意的是不同的DBMS,驱动和连接字符串不同,其它均同,下表是经过测试可以用的jar包和字符串:

DBMS

Jar包

驱动字符串

连接字符串

Mysql

mysql-connector-java-3.0.17-ga-bin.jar

com.mysql.jdbc.Driver

jdbc:mysql://ip:port/dbname?user=uname&password=pwd&useUnicode=true&characterEncoding=UTF-8

Ms sql server

Sqljdbc4.jar

com.microsoft.sqlserver.jdbc.SQLServerDriver

jdbc:sqlserver://ip:port;databaseName=AdventureWorks;user=MyUserName;password=*****;

Sybase sql anywhere

Jconn3.jar

com.sybase.jdbc3.jdbc.SybDriver

jdbc:sybase:Tds:ip:port

sybase

 

 

 

Db2

 

 

 

Oracle

 

 

 

Informix

 

 

 

Sybase SQL Anywhere建立连接示例代码:

String driver = "com.sybase.jdbc3.jdbc.SybDriver";

            String constring = "jdbc:sybase:Tds:10.0.2.2:2638";                         

            //-------------connecting test start--------------

            try {

                Class.forName(driver);

                java.sql.Connection conn= (java.sql.Connection) DriverManager.getConnection(constring,"dba","sql");           ((EditText)(Android_jdbcActivity.this.findViewById(R.id.edt_result))).setText("连接成功");

               

            } catch (ClassNotFoundException e) {

                // TODO Auto-generated catch block

                e.printStackTrace();

            ((EditText)(Android_jdbcActivity.this.findViewById(R.id.edt_result))).setText(e.getMessage());

            } catch (SQLException e) {

                // TODO Auto-generated catch block

                e.printStackTrace();

            ((EditText)(Android_jdbcActivity.this.findViewById(R.id.edt_result))).setText(e.getMessage());

            }

            //--------------connecting test end------------

注意:对于不同的dbms,driver和constring的值不同,见上表

23.3.1建立连接对象

建立连接对象示例代码:

String driver = "",constring="";    

      try {

         Class.forName(driver);

         java.sql.Connection mConnection= (java.sql.Connection) DriverManager.getConnection(constring);

      } catch (ClassNotFoundException e) {

         // TODO Auto-generated catch block

         e.printStackTrace();

      } catch (SQLException e) {

         // TODO Auto-generated catch block

         e.printStackTrace();

     

连接池实现:

 

23.3.2无参Insert、Delete、Update实现

 

Insert、Delete和Update的实现代码一致,仅SQL语句不一样:

   public int EXECUTE_IMMEDIATE(String SQLStatement,Transaction transaction){

      java.sql.Connection conn = transaction.getConnection();

      if(conn!=null) {

         try         

            Statement cmd = conn.createStatement();          

            int result = cmd.executeUpdate(SQLStatement);

            if(!conn.getAutoCommit()) {

                conn.commit();

                conn.setAutoCommit(false);

            }

            return result;

         } catch (SQLException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

            Log.d("demo", "执行错误"+e.getMessage());

            return -1;

         }

      }

      else {

         Log.d("demo", "连接对象为null");

         return 0;

      }

   }

http://blog.sina.com.cn/s/blog_4ed320a901017ql7.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值