以連接MS SQL(sqlserver數據庫)的網絡數據庫為例,從當前搜集的資料來看,一共有兩種方式:在Android工程中引入JDBC驅動,直接連接;通過WebService等方法的間接連接。
采用JDBC方法主要問題是安全性不高,而且一旦要訪問的數據量過多,容易出問題。另外,Android系統本身有對json或者xml直接解析的api,所以建議采用第二種方法,實用性與安全性都提高了。
1 直接連接方式
1.1 使用jtds方法
用jdts連接sql server數據庫有兩種方式:
第一種就是指定用戶和密碼;第二種就是windows系統賬戶。
兩種連接有什么不同呢?url不同,然后就是第二種不需要用戶名和密碼。
兩種url如下:
第一種:url="jdbc:jtds:sqlserver://10.253.66.19;database=Assess";
第二種:url="jdbc:jtds:sqlserver://10.253.66.19;database=Assess;integratedSecurity=true";
然后的代碼就差不多了:
Class.forName(DRIVER);
conn=DriverManager.getConnection(url,user_name, password);//第一種
//conn=DriverManager.getConnection(url;//第二種
System.out.println("connect success!");
但是僅僅做上面的工作是不夠的,我們還需要把jdts的ntlmauth.dll文件copy到java的bin目錄下。一般是copy到jre/bin目錄下,但是我們在開發中通常會選擇jdk/bin目錄。所以保險的做法是兩個地方都copy到。
具體可操作如下:
首先,需要下載jdts最新的Jar包 https://sourceforge.net/projects/jtds/ 。
然后,在工程目錄下,建立一個libs文件夾,把jtds的jar包拷貝進去。(據說android開發第三方jar文件必須放在libs目錄下,未經考證,不只真假);
右鍵,選擇build path,添加到編譯目錄。這時會自動生成一個Referenced Libraries引用,這樣就OK了。
最后,添加如下的測試代碼,運行測試。
package com.sundee.utility; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import android.util.Log; public class DBHelper { public static void Test() { try { Class.forName("net.sourceforge.jtds.jdbc.Driver"); System.out.println("數據庫驅動成功"); } catch (ClassNotFoundException e1) { e1.printStackTrace(); System.out.println("加載數據庫引擎失敗"); Log.i("test", e1.getMessage()); } try { Connection con = DriverManager.getConnection( "jdbc:jtds:sqlserver://192.168.0.103:1433/201111RuiDiKe", "sa", "123456"); System.out.println("連接數據庫成功"); Statement stmt = con.createStatement();// 創建SQL命令對象 // 創建表 System.out.println("開始創建表"); String query = "create table stu(ID NCHAR(2),NAME NCHAR(10))";// 創建表SQL語句 stmt.executeUpdate(query);// 執行SQL命令對象 System.out.println("表創建成功"); // 輸入數據 System.out.println("開始插入數據"); String a1 = "INSERT INTO stu VALUES('1','嘻嘻')";// 插入數據SQL語句 String a2 = "INSERT INTO stu VALUES('2','哈哈')"; String a3 = "INSERT INTO stu VALUES('3','咳咳')"; stmt.executeUpdate(a1);// 執行SQL命令對象 stmt.executeUpdate(a2); stmt.executeUpdate(a3); System.out.println("插入數據成功"); // 讀取數據 System.out.println("開始讀取數據"); ResultSet rs = stmt.executeQuery("SELECT * FROM stu");// 返回SQL語句查詢結果集(集合) // 循環輸出每一條記錄 while (rs.next()) { // 輸出每個字段 System.out.println(rs.getString("ID") + "\t" + rs.getString("NAME")); } System.out.println("讀取完畢"); // 關閉連接 stmt.close();// 關閉命令對象連接 con.close();// 關閉數據庫連接 } catch (SQLException e) { e.printStackTrace(); System.out.println("數據庫連接錯誤"); } } }
有關jdts的具體的查詢與應用,可參考文章[3,4]進行操作。
具體可參考文章[5]
2 通過WebService方式進行連接
2.1 樣例1
具體可參考文章【6,7】進行測試開發。
參考文章
1. mozart, android 直連 sqlserver 2008 R2
3. chenyucong, Android 連接 SQL Server (jtds方式)——下
4.荒野程序猿, 【Android解決方案】連接SQL Server
5. conowen, Android學習筆記(21)————利用JDBC連接服務器數據庫
6. long_zhou316, Android通過webservice連接SQLServer 詳細教程
7. Bottle, Android實現訪問Sqlserver