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

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() {@Overridepublic 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) {              }          }    }  }  

最后运行显示的界面:

更多相关文章

  1. 谷歌J2ObjC:打破Android应用与iOS应用之间的语言障碍
  2. Android仿人人客户端(v5.7.1)——网络模块优化
  3. 《深入探索Android热修复原理》代码热修复总结
  4. Android适配器进阶之一(单类型抽象适配器)
  5. 如何实现android蓝牙开发 自动配对连接,并不弹出提示框
  6. android通讯录开发
  7. JAVA 学到什么水平就可以转战 Android(安卓)了?
  8. Android中的Handler使用总结
  9. 阿里Android开发手册正式版一览

随机推荐

  1. android 实现GridView多选效果
  2. Android(安卓)中 控制 wifi
  3. Android(安卓)3.0 honeycomb TextView on
  4. openCv CameraBridgeViewBase 竖屏显示对
  5. 关于SQLite数据库的那些事儿
  6. 命令行执行Android程序
  7. 在 Android(安卓)Studio 中配置源码路径
  8. Android之RecyclerView简单使用(三)
  9. 在eclipse环境中开发android原生应用
  10. 【Android开发那点破事】解决Andriod使用