标签: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