首先下载JTDS(http://sourceforge.net/projects/jtds/files/jtds/),这里有JTDS的各种版本,起初下的是jtds-1.3.1,但在使用中总出现
ClassNotFound:net.sourceforge.jtds.jdbc.Driver 错误,后来下载了1.2.7版本,解决了这个问题
[java] view plain copy print ?
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.sql.Statement;
-
- import android.app.Activity;
- import android.os.AsyncTask;
- import android.os.Bundle;
- import android.util.Log;
-
-
- public class MainActivity extends Activity
- {
-
- private String UserName = "sa";
- private String Password = "sa";
-
- @Override
- public void onCreate(Bundle savedInstanceState)
- {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
-
- ConnectTask dt = new ConnectTask();
- dt.execute();
-
- }
-
- class ConnectTask extends AsyncTask<Integer, Integer, String>
- {
- Connection con = null;
- @Override
- protected void onPreExecute() {
-
- super.onPreExecute();
- }
-
- @Override
- protected String doInBackground(Integer... params) {
-
- try {
- Class.forName( "net.sourceforge.jtds.jdbc.Driver");
- con = DriverManager.getConnection( "jdbc:jtds:sqlserver://10.0.2.2:1433/AndroidSample", UserName, Password); //10.0.2.2是使用模拟器是用的本机(pc)的IP,androidSample是我的数据库名称
- testConnection(con);
- } catch (ClassNotFoundException e1) {
-
- e1.printStackTrace();
- Log.e("Class.forName::ClassNotFoundException", e1.getMessage());
- }catch (SQLException e) {
-
- e.printStackTrace();
- }
-
- return "执行完毕";
- }
-
- @Override
- protected void onPostExecute(String result) {
- super.onPostExecute(result);
- }
-
- public void testConnection(Connection con) throws java.sql.SQLException {
- try {
- String sql = "SELECT * FROM Seed.Person";
- Statement stmt = con.createStatement();
- ResultSet rs = stmt.executeQuery(sql);
-
- while (rs.next()) {
- Log.e("&&&&&", rs.getString("NameChs"));
- Log.e("&&&&&", rs.getString("OperateUserName"));
- }
- rs.close();
- stmt.close();
- } catch (SQLException e) {
- System.out.println(e.getMessage().toString());
- } finally {
- if (con != null)
- try {
- con.close();
- } catch (SQLException e) {
- }
- }
- }
- }
-
- }
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
public class MainActivity extends Activity
{
private String UserName = "sa";
private String Password = "sa";
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ConnectTask dt = new ConnectTask();
dt.execute();
}
class ConnectTask extends AsyncTask<Integer, Integer, String>
{
Connection con = null;
@Override
protected void onPreExecute() {
//第一个执行方法
super.onPreExecute();
}
@Override
protected String doInBackground(Integer... params) {
//建立于数据库的连接
try {
Class.forName( "net.sourceforge.jtds.jdbc.Driver");
con = DriverManager.getConnection( "jdbc:jtds:sqlserver://10.0.2.2:1433/AndroidSample", UserName, Password); //10.0.2.2是使用模拟器是用的本机(pc)的IP,androidSample是我的数据库名称
testConnection(con);//测试数据库连接
} catch (ClassNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
Log.e("Class.forName::ClassNotFoundException", e1.getMessage());
}catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return "执行完毕";
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
}
public void testConnection(Connection con) throws java.sql.SQLException {
try {
String sql = "SELECT * FROM Seed.Person";//查询表名为“Seed.Person”的所有内容
Statement stmt = con.createStatement();//创建Statement
ResultSet rs = stmt.executeQuery(sql);//ResultSet类似Cursor
while (rs.next()) {//<CODE>ResultSet</CODE>最初指向第一行
Log.e("&&&&&", rs.getString("NameChs"));
Log.e("&&&&&", rs.getString("OperateUserName"));
}
rs.close();
stmt.close();
} catch (SQLException e) {
System.out.println(e.getMessage().toString());
} finally {
if (con != null)
try {
con.close();
} catch (SQLException e) {
}
}
}
}
}
[java] view plain copy print ?
-
主要遇到了两个问题:
1、ClassNotFound错误:如果jtds库都导入了,还有这个问题,可能是jtds版本的问题。我最初用的jtds-1,3,1错误,后来用的jtds-1.2.7后解决了;
2、与数据库的连接涉及网络操作,不能直接写在OnCreate函数中,代码中单独定义了一个类,进行数据库的操作。
链接资料http://wangqige.com/connection-to-sql-server-under-android-by-jtds/
在这里感谢http://blog.csdn.net/lw20090801/article/details/11572499