Android連線網路資料庫的方式
前言
以連線 SQL Server
的網路資料庫為例,
常用的一共有兩種方式:
1.在Android工程中引入JDBC驅動,直接連線;
2.通過WebService等方法的間接連線。
採用JDBC方法主要問題是安全性不高,而且一旦要訪問的資料量過多,容易出問題。
另外,Android系統本身有對json或者xml直接解析的api,所以建議採用第二種方法,實用性與安全性都提高了。
正文
1 直接連線方式
1.1 使用jtds方法
1.1.1 匯入jtds相關依賴,具體可操作如下:
首先,需要下載jdts最新的Jar包 https://sourceforge.net/projects/jtds/ 。
然後,在工程目錄下,把jtds
的jar
包拷貝到libs
資料夾。
編譯專案。對lib進行引用。
最後,編輯測試程式碼,執行測試。
1.1.2 用jdts連線sql server資料庫有兩種方式:
第一種就是指定使用者和密碼;第二種就是windows系統賬戶。
兩種連線有什麼不同呢?url不同,然後就是第二種不需要使用者名稱和密碼。
兩種url如下例:
第一種:url=”jdbc:jtds:sqlserver://192.168.1.1;database=Assess”;
第二種:url=”jdbc:jtds:sqlserver://192.168.1.1;database=Assess;integratedSecurity=true”;
然後的程式碼就差不多了:
Class.forName(DRIVER);
conn=DriverManager.getConnection(url,user_name, password);//第一種
conn=DriverManager.getConnection(url);//第二種
System.out.println("connect success!");
1.1.3 一個簡單的Android通過jdbc直接連線mysql資料庫的小例子
1.1.3.1 Android 連線MySQL資料庫
public class DBOpenHelper {
//MySQL 驅動 根據使用的驅動自行調整使用
//private static String driver = "com.mysql.jdbc.Driver";
private static String driver = "net.sourceforge.jtds.jdbc.Driver";
//MYSQL資料庫連線Url,此處需要注意根據使用的驅動不同,連線url的方式也會有所差別,本文使用的驅動為JTDS
//private static String url = "jdbc:mysql://IP:埠號/資料庫";
private static String url = "jdbc:jtds:sqlserver://IP:埠號;instanceName=SQLEXPRESS;databaseName=資料庫名";
private static String user = "使用者名稱";//使用者名稱
private static String password = "密碼";//密碼
/**
* 連線資料庫
* */
public static Connection getConn(){
Connection conn = null;
try {
Class.forName(driver);//獲取MYSQL驅動
conn = (Connection) DriverManager.getConnection(url, user, password);//獲取連線
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
/**
* 關閉資料庫
* */
public static void closeAll(Connection conn, PreparedStatement ps){
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (ps != null) {
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
/**
* 關閉資料庫
* */
public static void closeAll(Connection conn, PreparedStatement ps, ResultSet rs){
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (ps != null) {
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
1.1.3.2 增刪改查
public class DBService {
private Connection conn=null; //開啟資料庫物件
private PreparedStatement ps=null;//操作整合sql語句的物件
private ResultSet rs=null;//查詢結果的集合
//DBService 物件
public static DBService dbService=null;
/**
* 構造方法 私有化
* */
private DBService(){
}
/**
* 獲取MySQL資料庫單例類物件
* */
public static DBService getDbService(){
if(dbService==null){
dbService=new DBService();
}
return dbService;
}
/**
* 獲取User資訊 例句---查
* */
public List<User> getUserData(){
//結果存放集合
List<User> list=new ArrayList<User>();
//MySQL 語句
String sql="select * from user";
//獲取連結資料庫物件
conn= DBOpenHelper.getConn();
try {
if(conn!=null&&(!conn.isClosed())){
ps= (PreparedStatement) conn.prepareStatement(sql);
if(ps!=null){
rs= ps.executeQuery();
if(rs!=null){
while(rs.next()){
User u=new User();
u.setId(rs.getString("id"));
u.setName(rs.getString("name"));
u.setPhone(rs.getString("phone"));
u.setContent(rs.getString("content"));
u.setState(rs.getString("state"));
list.add(u);
}
}
}
}
} catch (SQLException e) {
e.printStackTrace();
}
DBOpenHelper.closeAll(conn,ps,rs);//關閉相關操作
return list;
}
/**
* 修改資料庫中某個物件的狀態 例句---改
* */
public int updateUserData(String phone){
int result=-1;
if(!StringUtils.isEmpty(phone)){
//獲取連結資料庫物件
conn= DBOpenHelper.getConn();
//MySQL 語句
String sql="update user set state=? where phone=?";
try {
boolean closed=conn.isClosed();
if(conn!=null&&(!closed)){
ps= (PreparedStatement) conn.prepareStatement(sql);
ps.setString(1,"1");//第一個引數state 一定要和上面SQL語句欄位順序一致
ps.setString(2,phone);//第二個引數 phone 一定要和上面SQL語句欄位順序一致
result=ps.executeUpdate();//返回1 執行成功
}
} catch (SQLException e) {
e.printStackTrace();
}
}
DBOpenHelper.closeAll(conn,ps);//關閉相關操作
return result;
}
/**
* 批量向資料庫插入資料 例句---增
* */
public int insertUserData(List<User> list){
int result=-1;
if((list!=null)&&(list.size()>0)){
//獲取連結資料庫物件
conn= DBOpenHelper.getConn();
//MySQL 語句
String sql="INSERT INTO user (name,phone,content,state) VALUES (?,?,?,?)";
try {
boolean closed=conn.isClosed();
if((conn!=null)&&(!closed)){
for(User user:list){
ps= (PreparedStatement) conn.prepareStatement(sql);
String name=user.getName();
String phone=user.getPhone();
String content=user.getContent();
String state=user.getState();
ps.setString(1,name);//第一個引數 name 規則同上
ps.setString(2,phone);//第二個引數 phone 規則同上
ps.setString(3,content);//第三個引數 content 規則同上
ps.setString(4,state);//第四個引數 state 規則同上
result=ps.executeUpdate();//返回1 執行成功
}
}
} catch (SQLException e) {
e.printStackTrace();
}
}
DBOpenHelper.closeAll(conn,ps);//關閉相關操作
return result;
}
/**
* 刪除資料 例句---刪
* */
public int delUserData(String phone){
int result=-1;
if((!StringUtils.isEmpty(phone))&&(PhoneNumberUtils.isMobileNumber(phone))){
//獲取連結資料庫物件
conn= DBOpenHelper.getConn();
//MySQL 語句
String sql="delete from user where phone=?";
try {
boolean closed=conn.isClosed();
if((conn!=null)&&(!closed)){
ps= (PreparedStatement) conn.prepareStatement(sql);
ps.setString(1, phone);
result=ps.executeUpdate();//返回1 執行成功
}
} catch (SQLException e) {
e.printStackTrace();
}
}
DBOpenHelper.closeAll(conn,ps);//關閉相關操作
return result;
}
}
2 通過WebService方式進行連線
通過實現WebService端相關功能,向外部提供相關API方法,使用JSON或者XML資料協議進行通訊,基本操作,具體細節不作贅述
相關文章
- Android 連線資料庫Android資料庫
- Android連線資料庫sqlserverAndroid資料庫SQLServer
- Basic4Android主執行緒連線網路MySQL資料庫的方法Android執行緒MySql資料庫
- VirtualBox網路連線方式
- VMware連線網路的幾種方式
- Linux網路連線的三種方式Linux
- Android多個網路連線Android
- php網站資料庫連線PHP網站資料庫
- iis網站怎麼連線資料庫連線網站資料庫
- iis網站資料庫無法連線資料庫網站資料庫
- 117 遠端連線mysql資料庫的幾種方式MySql資料庫
- python連線clickhouse資料庫的兩種方式小結Python資料庫
- 用Navicat連線資料庫-資料庫連線(MySQL演示)資料庫MySql
- 網頁提示連線資料庫失敗是怎麼回事(網站資料庫連線失敗)網頁資料庫網站
- HGAdmin無法連線本地資料庫解決方式資料庫
- 連線資料庫資料庫
- 快速理解VirtualBox的四種網路連線方式
- 資料庫的連線數資料庫
- 網站連線資料庫配置錯誤網站資料庫
- 網站提示資料庫連線錯誤網站資料庫
- 網站連線資料庫配置檔案網站資料庫
- 網站連線資料庫怎麼辦網站資料庫
- 怎麼建立網站連線資料庫網站資料庫
- lesson3 簡單網路連線-網路資料的收發
- oracle資料庫透過sqlplus連線的幾種方式介紹Oracle資料庫SQL
- 資料庫連線池-Druid資料庫連線池原始碼解析資料庫UI原始碼
- mysqli連線資料庫MySql資料庫
- Mongodb資料庫連線MongoDB資料庫
- java連線資料庫Java資料庫
- 連線資料庫-mysql資料庫MySql
- jmeter連線資料庫JMeter資料庫
- Mybatis連線資料庫MyBatis資料庫
- JSP連線資料庫JS資料庫
- JDBC連線資料庫JDBC資料庫
- Flask連線資料庫Flask資料庫
- 資料庫與python的連線資料庫Python
- 資料庫的連線過程資料庫
- 《四 資料庫連線池原始碼》手寫資料庫連線池資料庫原始碼