首页 > 代码库 > android数据库编程:连接服务器上的MySQL数据库详细示例

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

 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         @Override19         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         @Override30         public void run() {31             // TODO Auto-generated method stub32             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 block41                 e.printStackTrace();42             } catch (SQLException e) {43                 // TODO Auto-generated catch block44                 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      * @return61      * @throws SQLException62      * @throws ClassNotFoundException63      */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 =http://www.mamicode.com/ 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数据库详细示例