Android通过JTDS直接连接SQL Server 2008数据库

时间:2022-04-28 13:31:34
 Android通过JTDS直接连接SQL Server 2008数据库 分类: java android 开发 android 732人阅读 评论(0)收藏 举报 androidsqlserver

首先下载JTDS(http://sourceforge.net/projects/jtds/files/jtds/),这里有JTDS的各种版本,起初下的是jtds-1.3.1,但在使用中总出现

ClassNotFound:net.sourceforge.jtds.jdbc.Driver 错误,后来下载了1.2.7版本,解决了这个问题


[java] view plaincopyprint?Android通过JTDS直接连接SQL Server 2008数据库Android通过JTDS直接连接SQL Server 2008数据库
  1. import java.sql.Connection;  
  2. import java.sql.DriverManager;  
  3. import java.sql.ResultSet;  
  4. import java.sql.SQLException;  
  5. import java.sql.Statement;  
  6.   
  7. import android.app.Activity;  
  8. import android.os.AsyncTask;  
  9. import android.os.Bundle;  
  10. import android.util.Log;  
  11.   
  12.   
  13. public class MainActivity extends Activity   
  14. {  
  15.       
  16.     private String UserName = "sa";  
  17.     private String Password = "sa";  
  18.       
  19.     @Override  
  20.     public void onCreate(Bundle savedInstanceState)  
  21.     {  
  22.         super.onCreate(savedInstanceState);  
  23.         setContentView(R.layout.main);  
  24.           
  25.         ConnectTask dt = new ConnectTask();  
  26.         dt.execute();  
  27.   
  28.     }  
  29.       
  30.     class ConnectTask extends AsyncTask<Integer, Integer, String>  
  31.     {  
  32.         Connection con = null;  
  33.         @Override  
  34.         protected void onPreExecute() {  
  35.             //第一个执行方法  
  36.             super.onPreExecute();  
  37.         }  
  38.           
  39.         @Override  
  40.         protected String doInBackground(Integer... params) {              
  41.             //建立于数据库的连接   
  42.             try {  
  43.                 Class.forName( "net.sourceforge.jtds.jdbc.Driver");  
  44.                 con = DriverManager.getConnection( "jdbc:jtds:sqlserver://10.0.2.2:1433/AndroidSample", UserName, Password);    //10.0.2.2是使用模拟器是用的本机(pc)的IP,androidSample是我的数据库名称  
  45.                 testConnection(con);//测试数据库连接  
  46.             } catch (ClassNotFoundException e1) {  
  47.                 // TODO Auto-generated catch block  
  48.                 e1.printStackTrace();  
  49.                 Log.e("Class.forName::ClassNotFoundException", e1.getMessage());  
  50.             }catch (SQLException e) {  
  51.                     // TODO Auto-generated catch block  
  52.                     e.printStackTrace();  
  53.             }  
  54.               
  55.             return "执行完毕";  
  56.         }  
  57.   
  58.         @Override  
  59.         protected void onPostExecute(String result) {  
  60.             super.onPostExecute(result);  
  61.         }  
  62.           
  63.         public void testConnection(Connection con) throws java.sql.SQLException {               
  64.             try {      
  65.                 String sql = "SELECT * FROM Seed.Person";//查询表名为“Seed.Person”的所有内容     
  66.                 Statement stmt = con.createStatement();//创建Statement     
  67.                 ResultSet rs = stmt.executeQuery(sql);//ResultSet类似Cursor     
  68.                     
  69.                 while (rs.next()) {//<CODE>ResultSet</CODE>最初指向第一行     
  70.                     Log.e("&&&&&", rs.getString("NameChs"));  
  71.                     Log.e("&&&&&", rs.getString("OperateUserName"));                        
  72.                 }      
  73.                 rs.close();    
  74.                 stmt.close();    
  75.             } catch (SQLException e) {    
  76.                 System.out.println(e.getMessage().toString());    
  77.             } finally {    
  78.                 if (con != null)    
  79.                     try {    
  80.                         con.close();    
  81.                     } catch (SQLException e) {    
  82.                     }    
  83.             }    
  84.         }     
  85.     }  
  86.   
  87. }  

[java] view plaincopyprint?
  1.   

主要遇到了两个问题:

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