关注互联网、IT技术!

android 直连 sqlserver 2008 R2

  •  admin
  •  2012-09-21 12:09:58
  •     

终究还是要开始写android程序了,哎,上次说要学android开发还是2011年7月20日,现在都悲催的2012年9月了,当初搭建了开发环境,买了书,就没了下文。这次公司要我把wince上的程序移植到android平台下。

简单的学了一整天,开始写代码。碰到的第一个难题就是android连接数据库的问题。网上很多人都建议使用webservice连接数据库,不应该直连。但是我的应用比较简单,用户就一个,只有一个客户端,所以直接数据库反而效果会更好。找了半天也没找到合适的解决方案。

意外的发现,一个android客户端软件mssql_lite,可以直连sqlserver数据库,并执行sql语句,由此看来,直连sqlserver是完全可行的。将那个软件的apk文件解压,我找到的连接数据库的驱动,使用的是开源的jdts,于是在sourceforge.com上找到了jar包。

按照网上使用jdts的方法,先在android工程里,引用了jar包,然后添加了如下测试代码



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("数据库连接错误");
			
		}
	}
}

悲催的是,程序执行时,抛出一个异常ClassNotFound Exception,类没有找到,显示是jar引用有问题,但是按照多数网友的说法引用,始终的找不到。最终在强大的google上,找到了答案,可行的引用步骤如下:

1、在工程目录下,建立一个libs文件夹,把jtds的jar包拷贝进去。(据说android开发第三方jar文件必须放在libs目录下,未经考证,不只真假)

2、右键,选择build path,添加到编译目录

3、这时会自动生成一个Referenced Libraries引用,这样就OK了。

重新运行程序,我的手机成功的直连到sqlserver 2008 r2,并创建新表添加了数据。



相关文章

评论

称呼(可以不填)
Email(可以不填)
链接(可以不填)
请输入评论内容*