1. 程式人生 > >android連線Mysql資料庫之JDBC方式

android連線Mysql資料庫之JDBC方式

開篇之前,提醒一句,記得關閉電腦防火牆,我的Android手機一直連不上電腦MySQL,排查了兩天,結果竟然是電腦防火牆的原因,那股不爽之情,油然而生.切記!!!

一.建立一個資料庫和若干表,並匯入相關資訊.這裡以我之前使用的一個圖書系統的資料庫為例子.

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

如下面的截圖所示.

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

最後說一聲,採用JDBC的方式雖然可以訪問資料庫,但是,這樣的方式不是很安全,因為,你必須把伺服器那邊的資料庫的使用者名稱,密碼,甚至IP地址都寫到程式碼裡面去,這樣的話,要是別人對你的apk進行反編譯,那麼,這些資料庫使用者名稱,密碼便顯露無遺.容易被別人用來惡意破壞你的資料庫.因此,並不建議用這樣的方式

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

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

相關推薦

android連線Mysql資料庫JDBC方式

開篇之前,提醒一句,記得關閉電腦防火牆,我的Android手機一直連不上電腦MySQL,排查了兩天,結果竟然是電腦防火牆的原因,那股不爽之情,油然而生.切記!!! 一.建立一個資料庫和若干表,並匯入相關資訊.這裡以我之前使用的一個圖書系統的資料庫為例子. 首先假設已經安裝並配置好Mysql.(建議大家安裝W

PHP連線mysql資料庫根據配置檔案選擇mysqli還是pdo方式

配置檔案config.php <?php return array( 'DB' => array( 'default_extension' => 'mysqli', ),

【TCL】使用TCL連線Mysql資料庫編譯mysqltcl(TCL安裝在CentOS 7中)

最近在用tcl,想著連線mysql,從網上查了一下發現用mysqltcl比較好,不過需要自己編譯,使用過程遇上一些問題,因此就總結了一下。首先是先編譯mysqltcl。說明一下,我的tcl是通過yum install tcl命令直接安裝的,因此不同安裝方式tcl路徑可能有變化,例如如果是通過rpm安

Java連線MySQL資料庫properties檔案配置

[ mysql-dbconfig.properties ] 檔案: # 資料庫驅動: driverClassName:com.mysql.jdbc.Driver # 資料庫連結地址: url:jdbc:mysql://localhost:3306/db_app

java專案連線mysql資料庫jdbc遇到的問題

最近在寫java專案的時候想要往資料庫裡存點東西,於是就用mysql資料庫來存資料,可我在使用過程中遇到了兩個問題,現做個筆記,問題如下: 一、報com.mysql.jdbc.Driver類未找到         之所以報這個錯,不是因為沒有匯入mysql驅動包,而是我導的

jmeterjdbc連線mysql資料庫

研究了一下jmeter如何連線mysql,進行增刪改查操作,下面記錄一下自己弄的時候的步驟 1.環境準備: 安裝jmeter(官網自行下載);下載一個mysql-connector-java-5.1.40.jar包,版本可以不一樣,放到jmeter的lib目錄下。(一

Android通過jdbc連線mySQL資料庫時,資料庫拒絕連線

原因: mysql伺服器出於安全考慮,預設只允許本機使用者通過命令列登入。 解決方案: 先通過localhost登入mysql伺服器 將mysql伺服器的mysql資料庫的user表中root使用者的Host欄位改為"%"。 操作如下: window+r 輸

Jmeter取樣器——通過Jmeter JDBC Request連線MySQL資料庫

Jmeter中的Sampler(取樣器)是與伺服器進行互動的單元。 Jmeter JDBC Request的工作通常分3步進行: 向伺服器傳送請求; 記錄伺服器的響應資料; 記錄響應時間。 具體步驟如下: 一、配置JDBC Connection Configur

Java開發——【錯誤】SSM整合,MySql資料庫連線異常情況JDBC屬性檔案的引用

JUNIT測試錯誤如下 org.apache.ibatis.exceptions.PersistenceException:  ### Error querying database.  Cause: org.springframework.jdbc.CannotG

使用Eclipse的JDBC連線Mysql資料庫

因為好久沒有弄資料庫和程式碼,今天心血來潮,弄個簡單的連線恢復一下記憶。 環境:MySQL任意版本;eclipse任意版本;JDBC驅動jar包; 1.MySQL安裝完畢後,建立資料庫,建立表; Enter password:*******  //出現welcome to th

jdbc連線Mysql資料庫實現crud

一.首先下載jdbc連線包 https://www.mysql.com/products/connector/ 二:然後解壓出來就可以看見下面兩個壓縮檔案 開啟eclise,假設已經建立好一個java專案 右鍵單擊專案名然後選擇如下圖所示步驟操作就好: 專案名

【Mac系統 + Python + Django】開發一個釋出會系統【Django模型(二)】 【Mac系統 + Mysql安裝Mysql資料庫 【Python + Mysql用pymysql庫連線Mysql資料庫並進行增刪改查操作

上一部分給大家介紹Django的檢視。 接下來繼續來了解Django框架,來看第二部分,此部分是對資料庫的操作。   目錄: 一、設計系統表 二、admin後臺管理 三、基本資料訪問(SQLite資料庫) 四、Django配置MySQL   &

jdbc連線mysql資料庫(或oracle)驗證通過,並操作資料庫

1.連線資料庫其實很簡單,直接粘程式碼,首先我們先複製mysql的jar包 2.再建立資料庫連線資訊檔案,寫入檔案,DRIVER可以照抄,URL是本地的資料庫資訊,如果是伺服器的資料庫可以將localhsot改成伺服器Ip,使用者名稱和密碼是資料庫的。 3.建立一個db類,第一個

jdbc連線mysql資料庫報時區錯誤和SSL連線錯誤

錯誤1:時區錯誤 報錯資訊: com.mysql.cj.core.exceptions.InvalidConnectionAttributeException: The server time zone value '?й???????' is unrecognized or represe

javaweb:JDBC連線MYSQL資料庫詳解,使用JDBC資料庫進行CRUD操作以及DAO模式的介紹

  JDBC簡介: JDBC全稱為:Java DataBase Connectivity(java資料庫連線)。 SUN公司為了簡化、統一對資料庫的操作,定義了一套Java操作資料庫的規範,稱之為JDBC。 組成JDBC的2個包: 連結:https://pan

idea 連線mysql資料庫瘋狂報錯 java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

IDEA連線mysql 一直瘋狂報錯 java.lang.ClassNotFoundException: com.mysql.jdbc.Driver   網上啥方法不管用,一氣之下把mysql-connector-java-5.1.7-bin.jar丟進了tomcat的lib

JDBC(1)-連線MySQL資料庫,及其基本概念

1、首先的知道這麼個事情sun公司提供了JDBC(用於執行SQL語句的Java API),但是JDBC不能直接操作資料庫,(“JDBC它只是一堆介面,沒有實現所以沒有具體操作資料庫的內容”),所以要使用JDBC操作資料庫,還需要各大資料庫廠商提供的JDBC驅動程式(也就是說sun提供了這麼一個介面,

使用JDBC連線MySQL資料庫並且完成增刪改查完整程式碼

完整路徑截圖: **//BaseDao.java檔案** package cn.utils; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement

寵物用品線上交易系統(chongwuyongpin),jdbc連線mysql資料庫

寵物用品線上交易系統mysql資料庫建立語句 寵物用品線上交易系統oracle資料庫建立語句 寵物用品線上交易系統sqlserver資料庫建立語句 寵物用品線上交易系統spring+springMVC+hibernate框架物件(javaBean,pojo)設計

PyCharm連線MySQL資料庫

1.在PyCharm右側工具欄有Database,點選開啟 如果沒有,則在view | Tool Windows | Database 選擇顯示 2.點選database中的“+”, 選擇Data S