码迷,mamicode.com
首页 > 移动开发 > 详细

android数据库编程:连接服务器上的MySQL数据库详细示例

时间:2014-12-10 10:27:35      阅读:301      评论:0      收藏:0      [点我收藏+]

标签:android   style   blog   http   io   ar   color   os   使用   

 1 public class DatabaseDemo extends Activity {
 2     private TextView textView;
 3 
 4     @Override
 5     protected void onCreate(Bundle savedInstanceState) {
 6         // TODO Auto-generated method stub
 7         super.onCreate(savedInstanceState);
 8         setContentView(R.layout.activity_databasedemo1);
 9         textView = (TextView) this.findViewById(R.id.myTextView);
10     }
11 
12     public void myButton_onClick(View view) {
13         new Thread(runnable).start();
14 
15     }
16 
17     Handler handler = new Handler(){
18         @Override
19         public void handleMessage(Message msg) {
20             super.handleMessage(msg);
21             Bundle bundle = msg.getData();
22             String result = bundle.getString("result");
23             textView.setText(result);
24         };
25     };
26     
27     private Runnable runnable = new Runnable() {
28 
29         @Override
30         public void run() {
31             // TODO Auto-generated method stub
32             try {
33                 String result = executeSQLQuery();
34                 Message message = new Message();
35                 Bundle bundle = new Bundle();
36                 bundle.putString("result", result);
37                 message.setData(bundle);
38                 handler.sendMessage(message);
39             } catch (ClassNotFoundException e) {
40                 // TODO Auto-generated catch block
41                 e.printStackTrace();
42             } catch (SQLException e) {
43                 // TODO Auto-generated catch block
44                 e.printStackTrace();
45             }
46         }
47     };
48 
49     
50     /**
51      * 在android中使用JDBC方式连接服务器上的MySQL数据库Logcat可能抛出的异常:
52      * 1.Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server;
53      *    如果只是抛出该异常,可能的原因如下:
54      *          (1)连接该MySQL数据库的用户不具有远程主机访问权限;
55      *     (2)调高连接数据库的次数,在MySQL.ini配置文档中可以修改;
56      *     (3)没有创建数据库;
57      *    如果同时抛出了2所示的异常,参照2的解决方案;
58      * 2.Caused by: android.os.NetworkOnMainThreadException;抛出这种异常的原因是在android的主线程中执行了HTTP请求;解决
59      *    的方法是利用Handler管理新创建的线程,在新的线程中执行HTTP请求;
60      * @return
61      * @throws SQLException
62      * @throws ClassNotFoundException
63      */
64     public String executeSQLQuery() throws SQLException, ClassNotFoundException {
65         String string = "";
66         // 加载驱动程序;(虚拟机加载类,而非在编程的过程中要使用这个类。)
67         Class.forName("com.mysql.jdbc.Driver");
68         // 建立数据库连接;
69         Connection connection = DriverManager.getConnection(
70                 "jdbc:mysql://10.20.48.157:3306/test", "test", "mysql@test");
71         // 创建SQL语句,执行语句,返回结果集;
72         Statement statement = connection.createStatement();
73         ResultSet resultSet = statement.executeQuery("SELECT * FROM vote");
74 
75         // 处理结果集(包括元数据);
76         ResultSetMetaData rsMetaData = resultSet.getMetaData();
77         while (resultSet.next()) {
78             for (int i = 1; i <= rsMetaData.getColumnCount(); i++) {
79                 string += resultSet.getString(i) + " ";
80             }
81             string += "\n";
82         }
83         // 关闭数据库连接;(连接数据库在Java应用程序中是笔很大的开销。)
84         connection.close();
85         return string;
86     }
87 }

 

android数据库编程:连接服务器上的MySQL数据库详细示例

标签:android   style   blog   http   io   ar   color   os   使用   

原文地址:http://www.cnblogs.com/warnier-zhang/p/4154674.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!