黑马程序员技术交流社区

标题: Android连接Mysql数据库之JDBC方式 [打印本页]

作者: Android_Robot    时间: 2016-5-27 16:38
标题: Android连接Mysql数据库之JDBC方式
本帖最后由 Android_Robot 于 2016-10-19 14:52 编辑

Android连接Mysql数据库之JDBC方式


一.创建一个 数据库和若干表,并导入相关信息.

首先假设已经安装并配置好Mysql.(建议大家安装WAMP,也就是安装完这个,就相当于安装了Mysql,PHPAdimin,Apache这三个软件,以后采用php,apache搭建动态网站服务器的方式访问数据库时候需要用到这几个软件).
1.进入Mysql Command Line Client客户端,创建一个名为"LibrarryDB"的数据库.
create database LibraryDB;
2.赋予某某一个用户访问权限,以后通过这一个用户访问LibraryDB数据库.这个用户名为"user",登陆密码是"1234". localhost表示可以通过本地主机访问数据库LibraryDB.而@'%表示允许远程访问,即可以通过其他电脑或手机访问到你这个数据库.赋予用户权限后,flush privileges;相当于保存刷新.如果没有这一句,下次登陆会出现密码报错的情况.
grant all privileges on LibraryDB.*  to 'user'@localhost  IDENTIFIED  by '1234';
grant all privileges on LibraryDB.*  to 'user'@'%' IDENTIFIED  by '1234';
flush privileges;

3.往数据库里面创建表,并插入相关的数据.
进入Mysql客户端,使用use LibraryDB进入LibraryDB数据库,插入下面的数据.可以一条一条地插入,但如果数据量太庞大的话,这样的方式就显昝太麻烦,这个时候,可以考虑将这些数据放在某一个txt文件里面,然后将txt格式改为sql脚本文件.如我的命名为:db.sql.
然后通过Mysql命令,将这份db.sql脚本文件导入到你的数据库当中.假设我的db.sql放在D盘.如图:
\. d:\db.sql;

二、导入外部JAR包.
需要说明的是,Java虽然提供对JDBC的支持,但是,JAVA JDK里面并不包含JDBC API,因此,若想使用JDBC连接操作数据库,需要我们从外部导入一个JDBC的JAR包.这个JAR包,可以到Mysql官方网站 (点击进入)去下载,如我下载的是:mysql-connector-java-5.0.8.tar.gz.将下载下来的文件解压,放到电脑某个盘上.如:d:\Mysql.新建一个JAVA或Android工程.
选择工程-->右键 Build Path-->Configur Build Path-->选择Java Build Path-->点击 Add External JARS-->选择下载的的jar包--->打开,确定
到此,JDBC的jar包就导入到你的工程里面去了.


三、JDBC连接并操作数据库
Java语言提供了对采用JDBC访问并操作数据库的支持.由于android是采用Java语言编写的,自然而然地,也就继承了这一功能的支持.
JDBC API 工作的4个重要的环节:
1.       DriverManager类:依据数据库的不同管理jdbc驱动
2.       Connection接口:负责连接数据库并担任传送数据的任务。
3.       Statement 接口:友Connection产生,负责执行sql语句。
4.       ResultSet接口:负责保存Statement执行后所产生的查询结果。

不管是java,还是android,其通过JDBC访问数据库的基本步骤都是一样的.
(一)加载JDBC驱动程序,并连接数据库.JDBC对于不同的数据库的连接方法略有不同.具体如下所示.//连接URL为   jdbc:mysql//服务器地址/数据库名  ,后面的2个参数分别是登陆用户名和密码
       1、DB2
  Class.forName("Com.ibm.db2.jdbc.net.DB2Driver");
  String url="jdbc:db2://dburl:port/DBname"
  cn = DriverManager.getConnection( url, userName, password );
  2、Microsoft SQLServer(microsoft)
  Class.forName( "com.microsoft.jdbc.sqlserver.SQLServerDriver" );
  cn = DriverManager.getConnection( "jdbc:microsoft:sqlserver://DBServerIP:1433;databaseName=master", userName, password );
  3、Sybase(jconn2.jar)
  Class.forName( "com.sybase.jdbc2.jdbc.SybDriver" );
  cn = DriverManager.getConnection( "jdbc:sybase:Tds:DBServerIP:2638", userName, password);
  4、MySQL(mm.mysql-3.0.2-bin.jar)
  Class.forName("com.mysql.jdbc.Driver");   
  cn = DriverManager.getConnection( "jdbc:mysql://DBServerIP:3306/myDatabaseName", userName, password );
  5、PostgreSQL(pgjdbc2.jar)
  Class.forName( "org.postgresql.Driver" );
  cn = DriverManager.getConnection( "jdbc:postgresql://DBServerIP/myDatabaseName", userName, password );
  6、Oracle(classes12.jar)
  Class.forName( "oracle.jdbc.driver.OracleDriver" );
  cn = DriverManager.getConnection( "jdbc:oracle:thin:@MyDbComputerNameOrIP:1521:ORCL", userName, password );
  7、ODBC
  Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" );
  Connection cn = DriverManager.getConnection( "jdbc:odbc:" + sDsn, userName, password );
    由于我的电脑安装的是Mysql,主机IP为"192.168.137.1",数据库端口是默认的3306.故,连接到Mysql的程序为:
    Class.forName("com.mysql.jdbc.Driver");     //加载MYSQL JDBC驱动程序   
    Connection con = (Connection) DriverManager.getConnection("jdbc:mysql://192.168.137.1:3306/LibraryDB","user","1234");
            
(二). 对数据库进行增,删,改,查.
(1)       ResultSet executeQuery (String sql) :可以进行色sql查询并获取到ResultSet对象。
     String sql="select B_Name from book"; //具体视你的查询要求而定
     Statement st=(Statement) con.createStatement();
     ResultSet rs=st.executeQuery(sql);
     while(rs.next())
     {
          //进行你想要的查询.
          rs.getString("B_Name");
     }

(2)int executeUpdate(String sql ):可以执行插入删除更新等操作,返回值是执行操作返回的受影响函数。
     String sql="drop table student";   
     Statement st=(Statement) con.createStatement();
     ResultSet rs=st.executeUpdate(sql);
(3) boolean execute (String sql) :可以执行任意sql语返回一个布尔值,表示是否返回ResultSet

(三)关闭数据库
     rs.close();
     st.close();
     con.close();

四. 根据以上的方法,进行android JDBC连接数据库的演示.
用户可以输入SQL查询命令,然后点击"查询数据库"按键的时候,会将查询结果显示在下面的TextView上.
如下面的截图所示.

由于上面已经介绍地很详尽了,所以在此就不再给出工程代码了.如果想要完整的程序代码可到以下地下下载。
CSDN下载:

最后说一声,采用JDBC的方式虽然可以访问数据库,但是,这样的方式不是很安全,因为必须把服务器那边的数据库的用户名、密码、甚至IP地址都写到代码里面去,这样的话,要是别人对你的apk进行反编译,那么这些数据库用户名,密码便显露无遗。容易被别人用来恶意破坏你的数据库。因此并不建议用这样的方式。
对于数据库的访问,比较安全而普遍的方法,但是在你的电脑上搭建一个动态网页服务器(apache php mysql),然后android程序通过网页去访问你的数据库,如果需要传输数据,可用PHP 将数据打包成JSON包,然后另一方接收JSON包,对其进行解析得到相应数据。

其他精华资源推荐:
【强荐!】2016年最新Android学习路线图——按此路线图学习月薪过万{ 火速收入}

作者: Gelivable    时间: 2017-2-2 23:13
android程序通过网页去访问你的数据库,如果需要传输数据,可用PHP 将数据打包成JSON包,然后另一方接收JSON包,对其进行解析得到相应数据
作者: 强大的小小怪    时间: 2018-3-15 16:44
求分享!!!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2