以连接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到。
具体可操作如下:
然后,在工程目录下,建立一个libs文件夹,把jtds的jar包拷贝进去。(据说android开发第三方jar文件必须放在libs目录下,未经考证,不只真假);
右键,选择build path,添加到编译目录。这时会自动生成一个Referenced Libraries引用,这样就OK了。
最后,添加如下的测试代码,运行测试。
packagecom.sundee.utility;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;importandroid.util.Log;public classDBHelper
{public static voidTest()
{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】进行测试开发。
参考文章