以连接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

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. STM8S103内存详析

    STM8S103的RAM有1k,0x00-0x3FF(RAM和ROM统一编址),其中0x200-0x3ff共512个字节默认为堆栈,剩余的低端512个字节又分为了Zero Page和剩余的RAM(简称 ...

  2. Javascript平稳退化、渐进增强

    平稳退化 : javascript平稳退化就是如果一个浏览器完全不支持js或者禁用js的时候,它的基本功能不会受到任何影响.比方说一个网站使用了大量javascript来优化页面,我们现在把浏览器的j ...

  3. hadoop从wordCount开始

    最近一段时间大数据很火,我有稍微有点java基础,自然选择了由java编写的hadoop框架,wordCount是hadoop中类似于java中helloWorld的存在,自然不能错过. packag ...

  4. LightOJ-1236 Pairs Forming LCM 唯一分解定理

    题目链接:https://cn.vjudge.net/problem/LightOJ-1236 题意 给一整数n,求有多少对a和b(a<=b),使lcm(a, b)=n 注意数据范围n<= ...

  5. [Vijos P1369]难解的问题

    题目大意:给你一个序列,叫你求最长上升子序列长度,但必须包含第k项. 解题思路:我们把k左边的比a[k]大的数去掉,k右边的比k小的数去掉,就可以保证选到a[k]了(因为左边的数小于a[k],而a[k ...

  6. 一个 VUE 组件:实现子元素 scroll 父元素容器不跟随滚动(兼容PC、移动端)

    介绍 我们经常遇到一种情况.当滑动滚动条区域时,子元素滚动条到底部或顶部时就会触发父级滚动条,父级滚动条同理会继续向上触发,直至body容器.这是浏览器默认的滚动行为. 但是很多情况,我们想要子元素滚 ...

  7. Javascript系列——对象元素的数组去重实现

    概要 这是一篇记录文,记录数组操作对象去重的实现. 需求 有这样一个数组 [{ _id: 123, name: '张三' },{ _id: 124, name: '李四' },{ _id: 123, ...

  8. STM32为什么必须先配置时钟

    首先,任何外设都需要时钟,51单片机,stm32,430等等,因为寄存器是由D触发器组成的,往触发器里面写东西,前提条件是有时钟输入. 51单片机不需要配置时钟,是因为一个时钟开了之后所有的功能都可以 ...

  9. MapReduce 的类型与格式【编写最简单的mapreduce】(1)

    hadoop mapreduce 中的map 和reduce 函数遵循下面的形式 map: (K1, V1) → list(K2, V2) reduce: (K2, list(V2)) → list( ...

  10. MongoDB学习笔记&lt;七&gt;

    继续MongoDB的学习 1.导出数据(中断其它操作) 把数据库test中的books集合导出 在终端下进行操作 mongoexport -d test -c books -o /home/hadoo ...