一.創建一個數據庫和若干表,並導入相關信息.這里以我之前使用的一個圖書系統的數據庫為例子.
首先假設已經安裝並配置好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.
- 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');
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包,對其進行解析,得到相應數據.
這里就不再介紹了.以后用到的時候,會另寫一篇文章來重點介紹.