当前位置:   article > 正文

Android实现与SQL连接_android怎么连接sqlserver

android怎么连接sqlserver

为了实现这个功能,在网上看了很多资料,可是就是下载源码来运行都还是出错,后来通过看代码总结,终于弄明白了一点,

Android与SQL连接,可以通过WebService搭建桥梁实现与SQL的连接,第二种就是通过JDBC实现与SQL连接,

本文主要是实现第二种。首先你需要在服务器建立一个数据库,如下图:

在这个代码的编写前,我们需要导入jtds-1.2.7.jar包:

   

然后进入代码的正式编写,我们主要是接收从服务器端发来的数据,布局非常的简单,主要用一个listview展示数据,

java代码的编写才是关键,详细如下:

package com.example.androidsql;

import java.sql.Connection;  
import java.sql.DriverManager;  
import java.sql.ResultSet;  
import java.sql.Statement;  
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
import android.app.Activity;  
import android.database.SQLException;  
import android.os.Bundle;  
import android.os.Handler;
import android.os.Message;
import android.widget.ListView;
import android.widget.SimpleAdapter;

/*
 * @author 王能斌
 * Android实现与SQL数据访问
 */
public class MainActivity extends Activity {  
	
	private ListView sqlList;
	private List<Map<String, Object>> listItems ;
	Map<String, Object> listItem;
	private Handler handler;
    @Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  
        
        sqlList = (ListView) this.findViewById(R.id.sql_list);
        
        //此处关键,数据库的连接需放在子线程中操作
        //网上的代码基本没放在子线程中,程序运行报错,应该是Android5.0以后耗时操作需放在子线程中
        new Thread(new Runnable() {
		@Override
		public void run() {
			String userName = "sa";//用户名  
		        String password = "123456";//密码  
		        Connection con = null;  
		        try { 
		        // 加载驱动程序
		            Class.forName("net.sourceforge.jtds.jdbc.Driver");  
		            con = DriverManager.getConnection(  
		                    "jdbc:jtds:sqlserver://192.168.0.65:1433/StockManage", userName,  
		                    password);  
		        } catch (ClassNotFoundException e) {  
		            System.out.println("加载驱动程序出错");  
		        } catch (SQLException e) {  
		            System.out.println(e.getMessage());  
		        } catch (Exception e) {  
		            System.out.println(e.getMessage());  
		        }  
		        try {  
		            testConnection(con);//测试数据库连接  
		        } catch (java.sql.SQLException e) {  
		            e.printStackTrace();  
		        }  
			}
		}).start();
        //接收从子线程发回来的结果进行处理
        handler = new Handler(){
        	public void handleMessage(android.os.Message msg) {
        		if(msg.what == 0x123){
        			List<Map<String, Object>> data = (List<Map<String, Object>>) msg.obj;
		        	SimpleAdapter adapter = new SimpleAdapter(MainActivity.this,data, 
		        		R.layout.sql_item, 
		        		new String[]{"Cno","Cname","Cnum"},
		        		new int[]{R.id.cno,R.id.cname,R.id.cnum});
		        		sqlList.setAdapter(adapter);
		        	}
        		}
        };
        
    }  
  
    public void testConnection(Connection con) throws java.sql.SQLException {  
        try {  
            String sql = "SELECT * FROM Table_1";//查询表名为“Table_1”的所有内容  
            Statement stmt = con.createStatement();//创建Statement  
            ResultSet rs = stmt.executeQuery(sql);//ResultSet类似Cursor 
            listItems = new ArrayList<Map<String,Object>>();
            while (rs.next()) {
            	listItem = new HashMap<String , Object>();
            	listItem.put("Cno", rs.getString("Cno"));
    			listItem.put("Cname",rs.getString("Cname"));
    			listItem.put("Cnum", rs.getString("Cnum"));
    			listItems.add(listItem);
//                System.out.print(rs.getString("Cno") + " ");
//                System.out.print(rs.getString("Cname") + " "); 
//                System.out.println(rs.getString("Cnum"));  
            } 
            rs.close();  
            stmt.close(); 
            //消息从子线程发回主线程
            Message message = new Message();
            message.what = 0x123;
            message.obj = listItems;
            handler.sendMessage(message);
        } catch (SQLException e) {  
            System.out.println(e.getMessage().toString());  
        } finally {  
            if (con != null)  
                try {  
                    con.close();  //数据库的关闭
                } catch (SQLException e) {  
            }  
        }
    }  
}  
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/314211
推荐阅读
相关标签
  

闽ICP备14008679号