android連接Mysql數據庫之JDBC方式


一.創建一個數據庫和若干表,並導入相關信息.這里以我之前使用的一個圖書系統的數據庫為例子.

首先假設已經安裝並配置好Mysql.(建議大家安裝WAMP,也就是安裝完這個,就相當於安裝了Mysql,PHPAdimin,Apache這三個軟件,以后采用php,apache搭建動態網站服務器的方式訪問數據庫時候需要用到這幾個軟件,以后會另外寫一篇文章,在此不多說).

(一)進入Mysql Command Line Client客戶端,創建一個名為"LibrarryDB"的數據庫.

create database LibraryDB;

(二)賦予某某一個用戶訪問權限,以后通過這一個用戶訪問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;

(三)往數據庫里面創建表,並插入相關的數據.

進入Mysql客戶端,使用use LibraryDB進入LibraryDB數據庫,插入下面的數據.可以一條一條地插入,但如果數據量太龐大的話,這樣的方式就顯昝太麻煩,這個時候,可以考慮將這些數據放在某一個txt文件里面,然后將txt格式改為sql腳本文件.如我的命名為:db.sql.

  1. create table book  
  2. (  
  3.    ISBN varchar(20) primary key,  
  4.    B_Name varchar(50),  
  5.    B_Author varchar(50),     
  6.    B_Publishment varchar(80),  
  7.    B_BuyTime varchar(50)  
  8. );  
  9. insert into book values('9787302164289','3ds max 9三維建模','程鳳娟','清華大學出版社','2010-02-01');  
  10. insert into book values('9787121060953','photoshop cs3 圖像處理','卓越科技','電子工業出版社','2003-02-01');  
  11. insert into book values('9787121102462','Java程序員職場全攻略-從小工到專家','吳亞峰','電子工業出版社','2004-04-05');  
  12. insert into book values('9787115227508','Android 2.0游戲開發實戰寶典','吳亞峰','人民郵電出版社','2003-06-07');  
  13. insert into book values('9787030236630','PowerBuilder_10.5實用教程','樊金生','科學出版社','2005-07-05');  
  14. insert into book values('9787121079528','PowerBuilder 實用教程(第3版)','鄭阿奇','電子工業出版社','2005-07-09');  
  15. insert into book values('9787302244158','大學計算機基礎(21世紀普通高校計算機公共課程規划教材)','許薇,王東來 ','清華大學出版社','2005-0-09');  
  16. insert into book values('9787562324560','微型計算機原理及應用','吳榮光,呂鈞星','華南理工大學出版社','2005-07-09');  
  17. insert into book values('9787111187776','算法導論','(美)科曼(Cormen,T.H.) 等著,潘金貴 等譯','機械工業出版社','2005-07-09');  
  18.   
  19. create table student  
  20. (  
  21.   S_Num varchar(20) primary key,  
  22.   S_Name varchar(50),  
  23.   S_Age varchar(10),  
  24.   S_Sex varchar(50),  
  25.   S_Class varchar(50),  
  26.   S_Department varchar(50),  
  27.   S_Phone varchar(11),  
  28.   S_Permitted varchar(50),  
  29.   S_Pwd varchar(20)  
  30. );  
  31.   
  32. insert into student values('10001','李亞','20','女','計算機1班','計算機系','15176536034','是','001');  
  33. insert into student values('10002','王飛',21,'女','計算機1班','計算機系','13730220123','是','002');  
  34. insert into student values('10003','孫好',20,'男','計算機1班','計算機系','13633654578','是','003');  
  35. insert into student values('10004','何光',22,'男','計算機1班','計算機系','2578975','是','004');  
  36. insert into student values('10005','唐心',21,'女','計算機1班','計算機系','13936968956','是','005');  
  37. insert into student values('10006','宋理光',20,'男','計算機2班','計算機系','1234667','是','006');  
create table book
(
   ISBN varchar(20) primary key,
   B_Name varchar(50),
   B_Author varchar(50),   
   B_Publishment varchar(80),
   B_BuyTime varchar(50)
);
insert into book values('9787302164289','3ds max 9三維建模','程鳳娟','清華大學出版社','2010-02-01');
insert into book values('9787121060953','photoshop cs3 圖像處理','卓越科技','電子工業出版社','2003-02-01');
insert into book values('9787121102462','Java程序員職場全攻略-從小工到專家','吳亞峰','電子工業出版社','2004-04-05');
insert into book values('9787115227508','Android 2.0游戲開發實戰寶典','吳亞峰','人民郵電出版社','2003-06-07');
insert into book values('9787030236630','PowerBuilder_10.5實用教程','樊金生','科學出版社','2005-07-05');
insert into book values('9787121079528','PowerBuilder 實用教程(第3版)','鄭阿奇','電子工業出版社','2005-07-09');
insert into book values('9787302244158','大學計算機基礎(21世紀普通高校計算機公共課程規划教材)','許薇,王東來 ','清華大學出版社','2005-0-09');
insert into book values('9787562324560','微型計算機原理及應用','吳榮光,呂鈞星','華南理工大學出版社','2005-07-09');
insert into book values('9787111187776','算法導論','(美)科曼(Cormen,T.H.) 等著,潘金貴 等譯','機械工業出版社','2005-07-09');

create table student
(
  S_Num varchar(20) primary key,
  S_Name varchar(50),
  S_Age varchar(10),
  S_Sex varchar(50),
  S_Class varchar(50),
  S_Department varchar(50),
  S_Phone varchar(11),
  S_Permitted varchar(50),
  S_Pwd varchar(20)
);

insert into student values('10001','李亞','20','女','計算機1班','計算機系','15176536034','是','001');
insert into student values('10002','王飛',21,'女','計算機1班','計算機系','13730220123','是','002');
insert into student values('10003','孫好',20,'男','計算機1班','計算機系','13633654578','是','003');
insert into student values('10004','何光',22,'男','計算機1班','計算機系','2578975','是','004');
insert into student values('10005','唐心',21,'女','計算機1班','計算機系','13936968956','是','005');
insert into student values('10006','宋理光',20,'男','計算機2班','計算機系','1234667','是','006');



然后通過Mysql命令,將這份db.sql腳本文件導入到你的數據庫當中.假設我的db.sql放在D盤.如圖:

\. d:\db.sql;

 

二. 導入外部JAR包.

需要說明的是,JAVA雖然提供對JDBC的支持,但是,JAVA JDK里面並不包含JDBC API,因此,若想使用JDBC連接操作數據庫,需要我們從外部導入一個JDBC的JAR包.這個JAR包,可以到官網 去下載,如我下載的是:mysql-connector-java-5.0.8.tar.gz.將下載下來的文件解壓,放到電腦某個盤上.如:d:\Mysql.新建一個JAVA或Android工程.

選擇工程-->右鍵 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上.

如下面的截圖所示.

 

由於上面已經介紹地很詳盡了,所以在此就不再給出工程代碼了.如果想要完整的程序代碼可到以下地下下載.

 新浪下載:  androidMysqlTest,.rar

 CSDN下載: androidMySqlTest源碼

最后說一聲,采用JDBC的方式雖然可以訪問數據庫,但是,這樣的方式不是很安全,因為,你必須把服務器那邊的數據庫的用戶名,密碼,甚至IP地址都寫到代碼里面去,這樣的話,要是別人對你的apk進行反編譯,那么,這些數據庫用戶名,密碼便顯露無遺.容易被別人用來惡意破壞你的數據庫.因此,並不建議用這樣的方式

對於數據庫的訪問,比較安全而普遍的方法,但是在你的電腦上搭建一個動態網頁服務器(apache php mysql),然后android程序通過網頁去訪問你的數據庫,如果需要傳輸數據,可用PHP 將數據打包成JSON包,然后,另一方接收JSON包,對其進行解析,得到相應數據.

   這里就不再介紹了.以后用到的時候,會另寫一篇文章來重點介紹.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM