以连接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. conowenAndroid学习笔记(21)————利用JDBC连接服务器数据库

6. long_zhou316,  Android通过webservice连接SQLServer 详细教程

7. Bottle,  Android实现访问Sqlserver

Android 连接网络数据库的方式的更多相关文章

  1. atitit.client连接oracle数据库的方式总结

    client连接oracle数据库的方式总结 文件夹 Java程序连接一般使用jar驱动连接.. ... 桌面GUI一般採取c语言驱动oci.dll 直接连接... 间接连接(须要配置tns及其env ...

  2. Android连接远程数据库的避坑指南

    Android连接远程数据库的避坑指南 今天用Android Studio连接数据库时候,写了个测试连接的按钮,然后连接的时候报错了,报错信息: 2021-09-07 22:45:20.433 705 ...

  3. android连接Mysql数据库之JDBC方式

    一.创建一个数据库和若干表,并导入相关信息.这里以我之前使用的一个图书系统的数据库为例子. 首先假设已经安装并配置好Mysql.(建议大家安装WAMP,也就是安装完这个,就相当于安装了Mysql,PH ...

  4. 1-MySQL数据库(android连接MySQL数据库)

    很好的链接 http://www.cnblogs.com/best/p/6517755.html  一个小时学会MySQL数据库 http://www.cnblogs.com/klguang/p/47 ...

  5. android 连接网络的简单实例

    1.android有两种连接网络的类HttpURLConnect和HttpClient,但是HttpClient已逐渐被HttpURLConnect类代替所以就不提及. 2.实例 String add ...

  6. Delphi使用ADO连接网络数据库,断网后重连问题

    原始文章: https://blog.csdn.net/blog_jihq/article/details/11737699# 使用TADOConnection对象连接网络数据库(以MySQL为例), ...

  7. java连接MySQL数据库的方式

    Java连接数据库的几种方法 *说明 1.以MySQL数据库为例 2.分为四个步骤: 建立数据库连接, 向数据库中提交sql 处理数据库返回的结果 关闭数据库连接 一:JDBC 1.建立数据库连接 只 ...

  8. 【Android】Android连接SQLite3数据库的操作

    在前面使用SQLite3的时候,并没有留意到有SQLiteOpenHelper这个类,所以只好在Activity里面去创建和维护数据库跟数据表的创建. 但是,现在有了SQLiteOpenHelper这 ...

  9. Android 检测网络连接状态

    Android连接网络的时候,并不是每次都能连接到网络,因此在程序启动中需要对网络的状态进行判断,如果没有网络则提醒用户进行设置. 首先,要判断网络状态,需要有相应的权限,下面为权限代码(Androi ...

随机推荐

  1. HDU 1704 Rank【传递闭包】

    解题思路:给出n个选手,m场比赛,问不能判断胜负的询问最多有多少种 用传递闭包即可 但是如果直接用3重循环会超时 在判断d[i][j]=d[i][k]||d[k][j]是否连通的时候 可以加一个if语 ...

  2. Python3基础笔记---序列化

    1.json模块   菜鸟教程 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写. import json json.dumps json ...

  3. js表格隔行换色和hover效果

    <!--js效果--> <script src="js/jquery.min.js" language="javascript">< ...

  4. pandas 2 选择数据

    from __future__ import print_function import pandas as pd import numpy as np np.random.seed(1) dates ...

  5. Adobe Flex迷你教程 —Flex4全屏显示

    应用场景 1.播放器 我们经常看视频的时候,需要全屏显示,(在flex中这个视频初始化的时候是嵌入到html的iframe中). 2.监控 如下图所示,大多时候我们的监控用的是flex,而树形菜单和标 ...

  6. POJ 2607 Fire Station

    Fire Station Time Limit: 5000ms Memory Limit: 65536KB This problem will be judged on PKU. Original I ...

  7. 对于树的序列化,用了stream,很好

    https://leetcode.com/problems/serialize-and-deserialize-binary-tree/?tab=Description 下面这个解法里面的C++部分很 ...

  8. hadoop-01-ssh无密登录配置

    1,分配master机器2台,slave机器5台: 2,在全部机器上面配置/etc/hosts设置 3,全部机器上面进行ntp设置:TODO 4,在master机器上面: 不要用root登录 1) s ...

  9. jsp urlrewrite 中正則表達式不包括某个字符串写法

    因在程序中须要做城市间跳转,可是页面中包括的css.scripts和图片等路径是要排除在外的. 这就须要在正则中指定当遇到哪些 字符时须要略过. 正则例如以下: /((? !css)(?!script ...

  10. E-UTRA channel bandwidths per operating band (36.101)

    E-UTRA channel bandwidths per operating band (36.101) watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/ ...