【发布时间】:2014-04-14 17:34:48
【问题描述】:
public class ViewData extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_view_data);
AccessDBTask db=new AccessDBTask();
db.execute(new String[]{""});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.view_data, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
private class AccessDBTask extends AsyncTask<String, Void, List<String>> {
List<String> myData1 ;
@Override
protected List<String> doInBackground(String... params) {
String driverClassName="org.postgresql.Driver";
String url="jdbc:postgresql://url:port/dbname";
Connection dbConnect=null;
Statement statement=null;
ResultSet result;
//code for jdbc
myData1 = new ArrayList<String>();
try{
Class.forName (driverClassName).newInstance();
dbConnect = DriverManager.getConnection (url, "username", "password");
statement = dbConnect.createStatement();
DatabaseMetaData databaseMetaData = dbConnect.getMetaData();
String[] types = { "TABLE" };
result = databaseMetaData.getTables("%","username", "%", types );
while(result.next()) {
//int counter++;
String tableName = result.getString(3);
myData1.add(tableName);
}
statement.close();
dbConnect.close();
}catch(Exception ex){
}
return myData1;
}
@Override
protected void onPostExecute(List<String> myData12){
if(myData1.isEmpty()){
Toast.makeText(ViewData.this,"ERROR", Toast.LENGTH_SHORT).show();
}
ArrayAdapter adapter = new ArrayAdapter<String>(ViewData.this,R.layout.activity_listview, myData1);
ListView listView = (ListView) findViewById(R.id.country_list);
listView.setAdapter(adapter);
}
}//类AccessDBTask
}
你好!我的问题是 doInBackground 执行但 ArrayList 和结果集是空的。 这是我用来获取数据库表名的代码,我使用 Intent 从 MainActivity 调用 ViewData。但是当我运行它时相同的代码,因为 MainActivity 运行完美。日志控制台中没有错误
【问题讨论】:
标签: java android jdbc android-asynctask