PostgreSQL在android应用程序上无法100%运行
我来这里是因为我对安卓上的postgreSQL有问题。。。。 我之前编写了一个java类,这是一个连接到我的外部数据库(postgreSQL)并可以发送和接收查询的代码(它可以100%工作,我在MAC上用应用程序pgAdmin3测试了相同的查询,两个都有相同的结果)。 当我看到这是非常好的工作,我决定将代码导出到我的android应用程序。。。 问题是: 那个问题PostgreSQL在android应用程序上无法100%运行,android,postgresql,Android,Postgresql,我来这里是因为我对安卓上的postgreSQL有问题。。。。 我之前编写了一个java类,这是一个连接到我的外部数据库(postgreSQL)并可以发送和接收查询的代码(它可以100%工作,我在MAC上用应用程序pgAdmin3测试了相同的查询,两个都有相同的结果)。 当我看到这是非常好的工作,我决定将代码导出到我的android应用程序。。。 问题是: 那个问题 public static final String queryLojasCidadaoOrderByName = "SELECT
public static final String queryLojasCidadaoOrderByName = "SELECT * FROM public.lojas_cidadao ORDER BY nome_loja_cidadao";
public static final String queryLojasCidadao = "SELECT * FROM public.lojas_cidadao ";
没有在我的android应用程序上运行。。。当使用java应用程序时,它工作得很好!
但是这个问题
public static final String queryLojasCidadaoOrderByName = "SELECT * FROM public.lojas_cidadao ORDER BY nome_loja_cidadao";
public static final String queryLojasCidadao = "SELECT * FROM public.lojas_cidadao ";
它正在我的android应用程序上工作
订购方式有问题吗
欢迎任何帮助!:)谢谢大家!
我正在运行的应用程序的日志:
05-22 11:13:06.625: D/AbsListView(21421): unregisterIRListener() is called
05-22 11:13:06.835: D/AbsListView(21421): onVisibilityChanged() is called, visibility : 4
05-22 11:13:06.845: D/AbsListView(21421): unregisterIRListener() is called
05-22 11:13:16.014: D/skia(21882): ---- fAsset->read(2074) returned 0
05-22 11:13:16.064: D/dalvikvm(21882): GC_FOR_ALLOC freed 78K, 6% free 17421K/18408K, paused 20ms, total 20ms
05-22 11:13:16.094: I/dalvikvm-heap(21882): Grow heap (frag case) to 25.807MB for 8294416-byte allocation
05-22 11:13:16.114: D/dalvikvm(21882): GC_FOR_ALLOC freed 1K, 4% free 25519K/26512K, paused 18ms, total 18ms
05-22 11:13:16.124: D/dalvikvm(21882): GC_CONCURRENT freed <1K, 4% free 25519K/26512K, paused 2ms+2ms, total 16ms
05-22 11:13:16.144: D/dalvikvm(21882): GC_FOR_ALLOC freed <1K, 4% free 25519K/26512K, paused 15ms, total 16ms
05-22 11:13:16.194: I/dalvikvm-heap(21882): Grow heap (frag case) to 43.603MB for 18662416-byte allocation
05-22 11:13:16.214: D/dalvikvm(21882): GC_FOR_ALLOC freed <1K, 3% free 43744K/44740K, paused 23ms, total 23ms
05-22 11:13:16.234: D/dalvikvm(21882): GC_CONCURRENT freed 0K, 3% free 43744K/44740K, paused 3ms+3ms, total 21ms
05-22 11:13:19.157: W/System.err(21882): java.lang.NumberFormatException: Invalid double: "a"
05-22 11:13:19.157: W/System.err(21882): at java.lang.StringToReal.invalidReal(StringToReal.java:63)
05-22 11:13:19.167: W/System.err(21882): at java.lang.StringToReal.parseDouble(StringToReal.java:269)
05-22 11:13:19.167: W/System.err(21882): at java.lang.Double.parseDouble(Double.java:295)
05-22 11:13:19.167: W/System.err(21882): at com.example.basicmaponline.Intro$loadDatabase.doInBackground(Intro.java:102)
05-22 11:13:19.167: W/System.err(21882): at com.example.basicmaponline.Intro$loadDatabase.doInBackground(Intro.java:1)
05-22 11:13:19.167: W/System.err(21882): at android.os.AsyncTask$2.call(AsyncTask.java:287)
05-22 11:13:19.167: W/System.err(21882): at java.util.concurrent.FutureTask.run(FutureTask.java:234)
05-22 11:13:19.167: W/System.err(21882): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
05-22 11:13:19.167: W/System.err(21882): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
05-22 11:13:19.167: W/System.err(21882): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
05-22 11:13:19.167: W/System.err(21882): at java.lang.Thread.run(Thread.java:856)
05-22 11:13:19.177: D/ASYNC(21882): entrei no if da listaLojas
05-22 11:13:19.227: D/libEGL(21882): loaded /system/lib/egl/libEGL_adreno200.so
05-22 11:13:19.237: D/libEGL(21882): loaded /system/lib/egl/libGLESv1_CM_adreno200.so
05-22 11:13:19.237: D/libEGL(21882): loaded /system/lib/egl/libGLESv2_adreno200.so
05-22 11:13:19.247: I/Adreno200-EGL(21882): <qeglDrvAPI_eglInitialize:265>: EGL 1.4 QUALCOMM build: (CL3544079)
05-22 11:13:19.247: I/Adreno200-EGL(21882): Build Date: 03/28/13 Thu
05-22 11:13:19.247: I/Adreno200-EGL(21882): Local Branch: adreno_20130328
05-22 11:13:19.247: I/Adreno200-EGL(21882): Remote Branch:
05-22 11:13:19.247: I/Adreno200-EGL(21882): Local Patches:
05-22 11:13:19.247: I/Adreno200-EGL(21882): Reconstruct Branch:
05-22 11:13:19.297: D/OpenGLRenderer(21882): Enabling debug mode 0
05-22 11:13:22.320: D/AbsListView(21882): Get MotionRecognitionManager
05-22 11:13:22.330: D/AbsListView(21882): onVisibilityChanged() is called, visibility : 4
05-22 11:13:22.330: D/AbsListView(21882): unregisterIRListener() is called
05-22 11:13:22.330: D/AbsListView(21882): onVisibilityChanged() is called, visibility : 0
05-22 11:13:22.330: D/AbsListView(21882): unregisterIRListener() is called
05-22 11:13:22.340: D/AbsListView(21882): unregisterIRListener() is called
05-22 11:13:22.340: I/endeffect(21882): AbsListView.onMeasure(), getWidth()=0, getHeight()=0, this=android.widget.GridView{43b8b2f8 VFED.VC. ......I. 0,0-0,0 #7f070003 app:id/grid}
05-22 11:13:22.380: D/dalvikvm(21882): GC_FOR_ALLOC freed 8263K, 20% free 36922K/46100K, paused 21ms, total 21ms
05-22 11:13:22.420: I/dalvikvm-heap(21882): Grow heap (frag case) to 45.942MB for 9437200-byte allocation
05-22 11:13:22.470: D/dalvikvm(21882): GC_FOR_ALLOC freed 1K, 17% free 46137K/55320K, paused 49ms, total 49ms
05-22 11:13:22.500: D/dalvikvm(21882): GC_CONCURRENT freed 27K, 17% free 46110K/55320K, paused 13ms+3ms, total 34ms
05-22 11:13:22.520: D/AbsListView(21882): unregisterIRListener() is called
05-22 11:13:22.520: I/endeffect(21882): AbsListView.onLayout(), getWidth()=1080, getHeight()=1701, this=android.widget.GridView{43b8b2f8 VFED.VC. ......ID 0,0-1080,1701 #7f070003 app:id/grid}
05-22 11:13:22.520: I/endeffect(21882): AbsListView.onMeasure(), getWidth()=1080, getHeight()=1701, this=android.widget.GridView{43b8b2f8 VFED.VC. .F....ID 0,0-1080,1701 #7f070003 app:id/grid}
05-22 11:13:22.520: D/AbsListView(21882): unregisterIRListener() is called
05-22 11:13:22.520: I/endeffect(21882): AbsListView.onLayout(), getWidth()=1080, getHeight()=1701, this=android.widget.GridView{43b8b2f8 VFED.VC. .F....ID 0,0-1080,1701 #7f070003 app:id/grid}
05-22 11:13:22.660: D/AbsListView(21882): unregisterIRListener() is called
05-22 11:13:22.670: I/endeffect(21882): AbsListView.onMeasure(), getWidth()=1080, getHeight()=1701, this=android.widget.GridView{43b8b2f8 VFED.VC. .F....I. 0,0-1080,1701 #7f070003 app:id/grid}
05-22 11:13:22.670: D/AbsListView(21882): unregisterIRListener() is called
05-22 11:13:22.670: I/endeffect(21882): AbsListView.onLayout(), getWidth()=1080, getHeight()=1701, this=android.widget.GridView{43b8b2f8 VFED.VC. .F....ID 0,0-1080,1701 #7f070003 app:id/grid}
05-22 11:13:22.740: E/SpannableStringBuilder(21882): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
05-22 11:13:22.740: E/SpannableStringBuilder(21882): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
05-22 11:13:27.435: D/LISTA(21882): ENTREI AQUI CARALHOOO NA LISTA
05-22 11:13:27.435: D/AbsListView(21882): Get MotionRecognitionManager
05-22 11:13:27.435: D/AbsListView(21882): onVisibilityChanged() is called, visibility : 4
05-22 11:13:27.435: D/AbsListView(21882): unregisterIRListener() is called
05-22 11:13:27.445: D/AbsListView(21882): onVisibilityChanged() is called, visibility : 0
05-22 11:13:27.445: D/AbsListView(21882): unregisterIRListener() is called
05-22 11:13:27.445: D/AbsListView(21882): unregisterIRListener() is called
05-22 11:13:27.455: D/AbsListView(21882): unregisterIRListener() is called
05-22 11:13:27.455: I/endeffect(21882): AbsListView.onMeasure(), getWidth()=0, getHeight()=0, this=android.widget.ListView{43b6a938 V.ED.VC. ......I. 0,0-0,0 #102000a android:id/list}
05-22 11:13:27.475: D/AbsListView(21882): unregisterIRListener() is called
05-22 11:13:27.475: I/endeffect(21882): AbsListView.onLayout(), getWidth()=1080, getHeight()=1701, this=android.widget.ListView{43b6a938 V.ED.VC. ......ID 0,0-1080,1701 #102000a android:id/list}
05-22 11:13:27.585: D/AbsListView(21882): unregisterIRListener() is called
05-22 11:13:27.585: I/endeffect(21882): AbsListView.onMeasure(), getWidth()=1080, getHeight()=1701, this=android.widget.ListView{43b6a938 V.ED.VC. ......I. 0,0-1080,1701 #102000a android:id/list}
05-22 11:13:27.585: D/AbsListView(21882): unregisterIRListener() is called
05-22 11:13:27.595: I/endeffect(21882): AbsListView.onLayout(), getWidth()=1080, getHeight()=1701, this=android.widget.ListView{43b6a938 V.ED.VC. ......ID 0,0-1080,1701 #102000a android:id/list}
05-22 11:13:27.645: E/SpannableStringBuilder(21882): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
05-22 11:13:27.645: E/SpannableStringBuilder(21882): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
05-22 11:13:27.655: D/AbsListView(21882): onVisibilityChanged() is called, visibility : 4
05-22 11:13:27.655: D/AbsListView(21882): unregisterIRListener() is called
05-22 11:13:30.428: D/AbsListView(21882): Get MotionRecognitionManager
05-22 11:13:30.428: D/AbsListView(21882): onVisibilityChanged() is called, visibility : 4
05-22 11:13:30.428: D/AbsListView(21882): unregisterIRListener() is called
05-22 11:13:30.428: D/AbsListView(21882): onVisibilityChanged() is called, visibility : 0
05-22 11:13:30.428: D/AbsListView(21882): unregisterIRListener() is called
05-22 11:13:30.438: D/AbsListView(21882): unregisterIRListener() is called
05-22 11:13:30.438: D/AbsListView(21882): unregisterIRListener() is called
05-22 11:13:30.438: I/endeffect(21882): AbsListView.onMeasure(), getWidth()=0, getHeight()=0, this=android.widget.GridView{42202b48 VFED.VC. ......I. 0,0-0,0 #7f070003 app:id/grid}
05-22 11:13:30.458: D/AbsListView(21882): unregisterIRListener() is called
05-22 11:13:30.458: I/endeffect(21882): AbsListView.onLayout(), getWidth()=1080, getHeight()=1701, this=android.widget.GridView{42202b48 VFED.VC. ......ID 0,0-1080,1701 #7f070003 app:id/grid}
05-22 11:13:30.468: I/endeffect(21882): AbsListView.onMeasure(), getWidth()=1080, getHeight()=1701, this=android.widget.GridView{42202b48 VFED.VC. .F....ID 0,0-1080,1701 #7f070003 app:id/grid}
05-22 11:13:30.468: D/AbsListView(21882): unregisterIRListener() is called
05-22 11:13:30.468: I/endeffect(21882): AbsListView.onLayout(), getWidth()=1080, getHeight()=1701, this=android.widget.GridView{42202b48 VFED.VC. .F....ID 0,0-1080,1701 #7f070003 app:id/grid}
05-22 11:13:30.508: D/AbsListView(21882): unregisterIRListener() is called
05-22 11:13:30.518: I/endeffect(21882): AbsListView.onMeasure(), getWidth()=1080, getHeight()=1701, this=android.widget.GridView{42202b48 VFED.VC. .F....I. 0,0-1080,1701 #7f070003 app:id/grid}
05-22 11:13:30.518: D/AbsListView(21882): unregisterIRListener() is called
05-22 11:13:30.518: I/endeffect(21882): AbsListView.onLayout(), getWidth()=1080, getHeight()=1701, this=android.widget.GridView{42202b48 VFED.VC. .F....ID 0,0-1080,1701 #7f070003 app:id/grid}
05-22 11:13:30.568: E/SpannableStringBuilder(21882): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
05-22 11:13:30.568: E/SpannableStringBuilder(21882): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
05-22 11:13:30.568: D/AbsListView(21882): onVisibilityChanged() is called, visibility : 4
05-22 11:13:30.568: D/AbsListView(21882): unregisterIRListener() is called
package com.example.basicmaponline;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.concurrent.ExecutionException;
import android.app.Activity;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import com.mlab.android.basicoverlays.PostgreSQL;
import com.mlab.android.basicoverlays.SQLloja;
public class Intro extends Activity{
//SQLlistLoja listaLoja;
//HashMap<String, SQLloja> listaLoja;
ArrayList<SQLloja> listaLoja;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.intro);
//Intent openMainActivity = new Intent("com.example.basicmaponline.MAINACTIVITY"); //isto vem do ficheiro AndroidManifest.xml o "com.example....."
//startActivity(openMainActivity);
try {
listaLoja = new loadDatabase().execute().get();
} catch (InterruptedException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (ExecutionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(listaLoja !=null){
for(SQLloja loja : listaLoja){
Log.d("ASYNC25", loja.getNome() );
}
}
else{
Log.d("ASYNC25", "NAO GUARDOU!" );
}
Thread timer = new Thread(){
public void run(){
try{
sleep(3000);
}catch (InterruptedException e) {
// TODO: handle exception
e.printStackTrace();
}finally{
Intent openMenu = new Intent("com.example.basicmaponline.MENU"); //isto vem do ficheiro AndroidManifest.xml o "com.example....."
openMenu.putExtra("listaLoja",listaLoja);
startActivity(openMenu);
}
}
};
timer.start();
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
//ourSong.release(); //release the music and we are done with you
finish();
}
//@SuppressWarnings("rawtypes")
public class loadDatabase extends AsyncTask<Void, Void, ArrayList<SQLloja>>{
@Override
//protected HashMap<String,SQLloja> doInBackground(Void... params) {
protected ArrayList<SQLloja> doInBackground(Void... params) {
// TODO Auto-generated method stub
//HashMap<String,SQLloja>listaLojas = new HashMap<String, SQLloja>();
ArrayList<SQLloja> listaLojas = new ArrayList<SQLloja>();
try{
PostgreSQL pSQL = new PostgreSQL();
//String sql = pSQL.getLojasCidadao();
String sql = PostgreSQL.queryLojasCidadaoOrderByName; // public static final String queryLojasCidadaoOrderByName = "SELECT * FROM public.lojas_cidadao ORDER BY nome_loja_cidadao";
Statement st = pSQL.getConnection().createStatement();
ResultSet rs = st.executeQuery(sql);
//Log.d("ASYNC2","Entrei na thread ASYNCTASK");
while(rs.next()){
int lcId = Integer.parseInt(rs.getString(1));
String lcNome=rs.getString(2);
String lcCP = rs.getString(3);
int lcDistrito = Integer.parseInt(rs.getString(4));
int lcConselho = Integer.parseInt(rs.getString(5));
double lcAltitude = Double.parseDouble(rs.getString(6));
double lcLongitude = Double.parseDouble(rs.getString(7));
String lcTelefone = rs.getString(8);
boolean lcEstado = Boolean.parseBoolean(rs.getString(9));
String lcRua = rs.getString(10);
SQLloja loja = new SQLloja(lcId,lcNome,lcCP,lcDistrito,lcConselho,lcAltitude,lcLongitude,lcTelefone,lcEstado,lcRua);
//listaLojas.put(loja.getNome(),loja.clone());
listaLojas.add(loja.clone());
String informacoesLoja = "Rua : "+lcRua+"\nC.P. : "+lcCP+"\nTel. : "+lcTelefone;
Log.d("ASYNC",lcNome+" Altitude = "+lcAltitude+" Longitude = "+lcLongitude+" Rua = "+lcRua);
}
//listaLoja = new SQLlistLoja(listaLojas);
rs.close();
st.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
if(listaLojas!=null){
Log.d("ASYNC","entrei no if da listaLojas");
for(SQLloja loja : listaLojas){
Log.d("ASYNC", loja.getNome() );
}
}
else Log.d("ASYNC","listaLoja nula ! PQP !");
return listaLojas;
/*HashMap<String ,SQLloja> listaLojas = new HashMap<String, SQLloja>();
try {
PostgreSQL pSQL = new PostgreSQL();
listaLojas = pSQL.getLojasCidadao();
if(listaLojas !=null){
for(SQLloja loja : listaLoja.values()){
Log.d("DOIN", loja.getNome() );
}
}
else Log.d("DOIN","NOT WOR");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(listaLojas !=null){
for(SQLloja loja : listaLoja.values()){
Log.d("DOIN2", loja.getNome() );
}
}
else Log.d("DOIN2","NOT WOR");
return listaLojas;*/
}
@Override
protected void onPostExecute(ArrayList<SQLloja> listaLojas){
listaLoja = listaLojas;
for(SQLloja loja : listaLoja){
Log.d("ASYNC24", loja.getNome() );
}
}
}
}
05-22 11:13:06.625:D/AbsListView(21421):调用UnregisterListener()
05-22 11:13:06.835:D/AbsListView(21421):调用onVisibilityChanged(),可见性:4
05-22 11:13:06.845:D/AbsListView(21421):调用UnregisterListener()
05-22 11:13:16.014:D/skia(21882):----fAsset->read(2074)返回0
5-22 11:13:16.064:D/dalvikvm(21882):释放78K的所有元素的GC_,6%的自由元素17421K/18408K,暂停20ms,总计20ms
05-22 11:13:16.094:I/dalvikvm堆(21882):将堆(frag案例)增长到25.807MB,用于8294416字节分配
5-22 11:13:16.114:D/dalvikvm(21882):释放1K的所有物质的GC_,4%的自由25519K/26512K,暂停18ms,总计18ms
05-22 11:13:16.124:D/dalvikvm(21882):GC_CONCURRENT freed可能找不到列名,因为您将表称为public.lojas_cidadadao
。试试这个:
public static final String queryLojasCidadaoOrderByName = "SELECT * FROM public.lojas_cidadao A ORDER BY A.nome_loja_cidadao";
您在其中一行中得到错误:
double lcAltitude = Double.parseDouble(rs.getString(6));
double lcLongitude = Double.parseDouble(rs.getString(7));
当您按
排序时,返回的数据可能已对列重新排序
换句话说,检查
ResultSet
是否包含orderby
子句,并检查差异在哪里。祝你好运。你得到的是一个java.lang.NumberFormatException
,因为你试图将一个不代表Double
的字符串解析为Double
。这与PostgreSQL没有任何关系
您可以在应用程序中解决许多问题:
05-22 11:13:06.625: D/AbsListView(21421): unregisterIRListener() is called
05-22 11:13:06.835: D/AbsListView(21421): onVisibilityChanged() is called, visibility : 4
05-22 11:13:06.845: D/AbsListView(21421): unregisterIRListener() is called
05-22 11:13:16.014: D/skia(21882): ---- fAsset->read(2074) returned 0
05-22 11:13:16.064: D/dalvikvm(21882): GC_FOR_ALLOC freed 78K, 6% free 17421K/18408K, paused 20ms, total 20ms
05-22 11:13:16.094: I/dalvikvm-heap(21882): Grow heap (frag case) to 25.807MB for 8294416-byte allocation
05-22 11:13:16.114: D/dalvikvm(21882): GC_FOR_ALLOC freed 1K, 4% free 25519K/26512K, paused 18ms, total 18ms
05-22 11:13:16.124: D/dalvikvm(21882): GC_CONCURRENT freed <1K, 4% free 25519K/26512K, paused 2ms+2ms, total 16ms
05-22 11:13:16.144: D/dalvikvm(21882): GC_FOR_ALLOC freed <1K, 4% free 25519K/26512K, paused 15ms, total 16ms
05-22 11:13:16.194: I/dalvikvm-heap(21882): Grow heap (frag case) to 43.603MB for 18662416-byte allocation
05-22 11:13:16.214: D/dalvikvm(21882): GC_FOR_ALLOC freed <1K, 3% free 43744K/44740K, paused 23ms, total 23ms
05-22 11:13:16.234: D/dalvikvm(21882): GC_CONCURRENT freed 0K, 3% free 43744K/44740K, paused 3ms+3ms, total 21ms
05-22 11:13:19.157: W/System.err(21882): java.lang.NumberFormatException: Invalid double: "a"
05-22 11:13:19.157: W/System.err(21882): at java.lang.StringToReal.invalidReal(StringToReal.java:63)
05-22 11:13:19.167: W/System.err(21882): at java.lang.StringToReal.parseDouble(StringToReal.java:269)
05-22 11:13:19.167: W/System.err(21882): at java.lang.Double.parseDouble(Double.java:295)
05-22 11:13:19.167: W/System.err(21882): at com.example.basicmaponline.Intro$loadDatabase.doInBackground(Intro.java:102)
05-22 11:13:19.167: W/System.err(21882): at com.example.basicmaponline.Intro$loadDatabase.doInBackground(Intro.java:1)
05-22 11:13:19.167: W/System.err(21882): at android.os.AsyncTask$2.call(AsyncTask.java:287)
05-22 11:13:19.167: W/System.err(21882): at java.util.concurrent.FutureTask.run(FutureTask.java:234)
05-22 11:13:19.167: W/System.err(21882): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
05-22 11:13:19.167: W/System.err(21882): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
05-22 11:13:19.167: W/System.err(21882): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
05-22 11:13:19.167: W/System.err(21882): at java.lang.Thread.run(Thread.java:856)
05-22 11:13:19.177: D/ASYNC(21882): entrei no if da listaLojas
05-22 11:13:19.227: D/libEGL(21882): loaded /system/lib/egl/libEGL_adreno200.so
05-22 11:13:19.237: D/libEGL(21882): loaded /system/lib/egl/libGLESv1_CM_adreno200.so
05-22 11:13:19.237: D/libEGL(21882): loaded /system/lib/egl/libGLESv2_adreno200.so
05-22 11:13:19.247: I/Adreno200-EGL(21882): <qeglDrvAPI_eglInitialize:265>: EGL 1.4 QUALCOMM build: (CL3544079)
05-22 11:13:19.247: I/Adreno200-EGL(21882): Build Date: 03/28/13 Thu
05-22 11:13:19.247: I/Adreno200-EGL(21882): Local Branch: adreno_20130328
05-22 11:13:19.247: I/Adreno200-EGL(21882): Remote Branch:
05-22 11:13:19.247: I/Adreno200-EGL(21882): Local Patches:
05-22 11:13:19.247: I/Adreno200-EGL(21882): Reconstruct Branch:
05-22 11:13:19.297: D/OpenGLRenderer(21882): Enabling debug mode 0
05-22 11:13:22.320: D/AbsListView(21882): Get MotionRecognitionManager
05-22 11:13:22.330: D/AbsListView(21882): onVisibilityChanged() is called, visibility : 4
05-22 11:13:22.330: D/AbsListView(21882): unregisterIRListener() is called
05-22 11:13:22.330: D/AbsListView(21882): onVisibilityChanged() is called, visibility : 0
05-22 11:13:22.330: D/AbsListView(21882): unregisterIRListener() is called
05-22 11:13:22.340: D/AbsListView(21882): unregisterIRListener() is called
05-22 11:13:22.340: I/endeffect(21882): AbsListView.onMeasure(), getWidth()=0, getHeight()=0, this=android.widget.GridView{43b8b2f8 VFED.VC. ......I. 0,0-0,0 #7f070003 app:id/grid}
05-22 11:13:22.380: D/dalvikvm(21882): GC_FOR_ALLOC freed 8263K, 20% free 36922K/46100K, paused 21ms, total 21ms
05-22 11:13:22.420: I/dalvikvm-heap(21882): Grow heap (frag case) to 45.942MB for 9437200-byte allocation
05-22 11:13:22.470: D/dalvikvm(21882): GC_FOR_ALLOC freed 1K, 17% free 46137K/55320K, paused 49ms, total 49ms
05-22 11:13:22.500: D/dalvikvm(21882): GC_CONCURRENT freed 27K, 17% free 46110K/55320K, paused 13ms+3ms, total 34ms
05-22 11:13:22.520: D/AbsListView(21882): unregisterIRListener() is called
05-22 11:13:22.520: I/endeffect(21882): AbsListView.onLayout(), getWidth()=1080, getHeight()=1701, this=android.widget.GridView{43b8b2f8 VFED.VC. ......ID 0,0-1080,1701 #7f070003 app:id/grid}
05-22 11:13:22.520: I/endeffect(21882): AbsListView.onMeasure(), getWidth()=1080, getHeight()=1701, this=android.widget.GridView{43b8b2f8 VFED.VC. .F....ID 0,0-1080,1701 #7f070003 app:id/grid}
05-22 11:13:22.520: D/AbsListView(21882): unregisterIRListener() is called
05-22 11:13:22.520: I/endeffect(21882): AbsListView.onLayout(), getWidth()=1080, getHeight()=1701, this=android.widget.GridView{43b8b2f8 VFED.VC. .F....ID 0,0-1080,1701 #7f070003 app:id/grid}
05-22 11:13:22.660: D/AbsListView(21882): unregisterIRListener() is called
05-22 11:13:22.670: I/endeffect(21882): AbsListView.onMeasure(), getWidth()=1080, getHeight()=1701, this=android.widget.GridView{43b8b2f8 VFED.VC. .F....I. 0,0-1080,1701 #7f070003 app:id/grid}
05-22 11:13:22.670: D/AbsListView(21882): unregisterIRListener() is called
05-22 11:13:22.670: I/endeffect(21882): AbsListView.onLayout(), getWidth()=1080, getHeight()=1701, this=android.widget.GridView{43b8b2f8 VFED.VC. .F....ID 0,0-1080,1701 #7f070003 app:id/grid}
05-22 11:13:22.740: E/SpannableStringBuilder(21882): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
05-22 11:13:22.740: E/SpannableStringBuilder(21882): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
05-22 11:13:27.435: D/LISTA(21882): ENTREI AQUI CARALHOOO NA LISTA
05-22 11:13:27.435: D/AbsListView(21882): Get MotionRecognitionManager
05-22 11:13:27.435: D/AbsListView(21882): onVisibilityChanged() is called, visibility : 4
05-22 11:13:27.435: D/AbsListView(21882): unregisterIRListener() is called
05-22 11:13:27.445: D/AbsListView(21882): onVisibilityChanged() is called, visibility : 0
05-22 11:13:27.445: D/AbsListView(21882): unregisterIRListener() is called
05-22 11:13:27.445: D/AbsListView(21882): unregisterIRListener() is called
05-22 11:13:27.455: D/AbsListView(21882): unregisterIRListener() is called
05-22 11:13:27.455: I/endeffect(21882): AbsListView.onMeasure(), getWidth()=0, getHeight()=0, this=android.widget.ListView{43b6a938 V.ED.VC. ......I. 0,0-0,0 #102000a android:id/list}
05-22 11:13:27.475: D/AbsListView(21882): unregisterIRListener() is called
05-22 11:13:27.475: I/endeffect(21882): AbsListView.onLayout(), getWidth()=1080, getHeight()=1701, this=android.widget.ListView{43b6a938 V.ED.VC. ......ID 0,0-1080,1701 #102000a android:id/list}
05-22 11:13:27.585: D/AbsListView(21882): unregisterIRListener() is called
05-22 11:13:27.585: I/endeffect(21882): AbsListView.onMeasure(), getWidth()=1080, getHeight()=1701, this=android.widget.ListView{43b6a938 V.ED.VC. ......I. 0,0-1080,1701 #102000a android:id/list}
05-22 11:13:27.585: D/AbsListView(21882): unregisterIRListener() is called
05-22 11:13:27.595: I/endeffect(21882): AbsListView.onLayout(), getWidth()=1080, getHeight()=1701, this=android.widget.ListView{43b6a938 V.ED.VC. ......ID 0,0-1080,1701 #102000a android:id/list}
05-22 11:13:27.645: E/SpannableStringBuilder(21882): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
05-22 11:13:27.645: E/SpannableStringBuilder(21882): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
05-22 11:13:27.655: D/AbsListView(21882): onVisibilityChanged() is called, visibility : 4
05-22 11:13:27.655: D/AbsListView(21882): unregisterIRListener() is called
05-22 11:13:30.428: D/AbsListView(21882): Get MotionRecognitionManager
05-22 11:13:30.428: D/AbsListView(21882): onVisibilityChanged() is called, visibility : 4
05-22 11:13:30.428: D/AbsListView(21882): unregisterIRListener() is called
05-22 11:13:30.428: D/AbsListView(21882): onVisibilityChanged() is called, visibility : 0
05-22 11:13:30.428: D/AbsListView(21882): unregisterIRListener() is called
05-22 11:13:30.438: D/AbsListView(21882): unregisterIRListener() is called
05-22 11:13:30.438: D/AbsListView(21882): unregisterIRListener() is called
05-22 11:13:30.438: I/endeffect(21882): AbsListView.onMeasure(), getWidth()=0, getHeight()=0, this=android.widget.GridView{42202b48 VFED.VC. ......I. 0,0-0,0 #7f070003 app:id/grid}
05-22 11:13:30.458: D/AbsListView(21882): unregisterIRListener() is called
05-22 11:13:30.458: I/endeffect(21882): AbsListView.onLayout(), getWidth()=1080, getHeight()=1701, this=android.widget.GridView{42202b48 VFED.VC. ......ID 0,0-1080,1701 #7f070003 app:id/grid}
05-22 11:13:30.468: I/endeffect(21882): AbsListView.onMeasure(), getWidth()=1080, getHeight()=1701, this=android.widget.GridView{42202b48 VFED.VC. .F....ID 0,0-1080,1701 #7f070003 app:id/grid}
05-22 11:13:30.468: D/AbsListView(21882): unregisterIRListener() is called
05-22 11:13:30.468: I/endeffect(21882): AbsListView.onLayout(), getWidth()=1080, getHeight()=1701, this=android.widget.GridView{42202b48 VFED.VC. .F....ID 0,0-1080,1701 #7f070003 app:id/grid}
05-22 11:13:30.508: D/AbsListView(21882): unregisterIRListener() is called
05-22 11:13:30.518: I/endeffect(21882): AbsListView.onMeasure(), getWidth()=1080, getHeight()=1701, this=android.widget.GridView{42202b48 VFED.VC. .F....I. 0,0-1080,1701 #7f070003 app:id/grid}
05-22 11:13:30.518: D/AbsListView(21882): unregisterIRListener() is called
05-22 11:13:30.518: I/endeffect(21882): AbsListView.onLayout(), getWidth()=1080, getHeight()=1701, this=android.widget.GridView{42202b48 VFED.VC. .F....ID 0,0-1080,1701 #7f070003 app:id/grid}
05-22 11:13:30.568: E/SpannableStringBuilder(21882): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
05-22 11:13:30.568: E/SpannableStringBuilder(21882): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
05-22 11:13:30.568: D/AbsListView(21882): onVisibilityChanged() is called, visibility : 4
05-22 11:13:30.568: D/AbsListView(21882): unregisterIRListener() is called
package com.example.basicmaponline;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.concurrent.ExecutionException;
import android.app.Activity;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import com.mlab.android.basicoverlays.PostgreSQL;
import com.mlab.android.basicoverlays.SQLloja;
public class Intro extends Activity{
//SQLlistLoja listaLoja;
//HashMap<String, SQLloja> listaLoja;
ArrayList<SQLloja> listaLoja;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.intro);
//Intent openMainActivity = new Intent("com.example.basicmaponline.MAINACTIVITY"); //isto vem do ficheiro AndroidManifest.xml o "com.example....."
//startActivity(openMainActivity);
try {
listaLoja = new loadDatabase().execute().get();
} catch (InterruptedException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (ExecutionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(listaLoja !=null){
for(SQLloja loja : listaLoja){
Log.d("ASYNC25", loja.getNome() );
}
}
else{
Log.d("ASYNC25", "NAO GUARDOU!" );
}
Thread timer = new Thread(){
public void run(){
try{
sleep(3000);
}catch (InterruptedException e) {
// TODO: handle exception
e.printStackTrace();
}finally{
Intent openMenu = new Intent("com.example.basicmaponline.MENU"); //isto vem do ficheiro AndroidManifest.xml o "com.example....."
openMenu.putExtra("listaLoja",listaLoja);
startActivity(openMenu);
}
}
};
timer.start();
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
//ourSong.release(); //release the music and we are done with you
finish();
}
//@SuppressWarnings("rawtypes")
public class loadDatabase extends AsyncTask<Void, Void, ArrayList<SQLloja>>{
@Override
//protected HashMap<String,SQLloja> doInBackground(Void... params) {
protected ArrayList<SQLloja> doInBackground(Void... params) {
// TODO Auto-generated method stub
//HashMap<String,SQLloja>listaLojas = new HashMap<String, SQLloja>();
ArrayList<SQLloja> listaLojas = new ArrayList<SQLloja>();
try{
PostgreSQL pSQL = new PostgreSQL();
//String sql = pSQL.getLojasCidadao();
String sql = PostgreSQL.queryLojasCidadaoOrderByName; // public static final String queryLojasCidadaoOrderByName = "SELECT * FROM public.lojas_cidadao ORDER BY nome_loja_cidadao";
Statement st = pSQL.getConnection().createStatement();
ResultSet rs = st.executeQuery(sql);
//Log.d("ASYNC2","Entrei na thread ASYNCTASK");
while(rs.next()){
int lcId = Integer.parseInt(rs.getString(1));
String lcNome=rs.getString(2);
String lcCP = rs.getString(3);
int lcDistrito = Integer.parseInt(rs.getString(4));
int lcConselho = Integer.parseInt(rs.getString(5));
double lcAltitude = Double.parseDouble(rs.getString(6));
double lcLongitude = Double.parseDouble(rs.getString(7));
String lcTelefone = rs.getString(8);
boolean lcEstado = Boolean.parseBoolean(rs.getString(9));
String lcRua = rs.getString(10);
SQLloja loja = new SQLloja(lcId,lcNome,lcCP,lcDistrito,lcConselho,lcAltitude,lcLongitude,lcTelefone,lcEstado,lcRua);
//listaLojas.put(loja.getNome(),loja.clone());
listaLojas.add(loja.clone());
String informacoesLoja = "Rua : "+lcRua+"\nC.P. : "+lcCP+"\nTel. : "+lcTelefone;
Log.d("ASYNC",lcNome+" Altitude = "+lcAltitude+" Longitude = "+lcLongitude+" Rua = "+lcRua);
}
//listaLoja = new SQLlistLoja(listaLojas);
rs.close();
st.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
if(listaLojas!=null){
Log.d("ASYNC","entrei no if da listaLojas");
for(SQLloja loja : listaLojas){
Log.d("ASYNC", loja.getNome() );
}
}
else Log.d("ASYNC","listaLoja nula ! PQP !");
return listaLojas;
/*HashMap<String ,SQLloja> listaLojas = new HashMap<String, SQLloja>();
try {
PostgreSQL pSQL = new PostgreSQL();
listaLojas = pSQL.getLojasCidadao();
if(listaLojas !=null){
for(SQLloja loja : listaLoja.values()){
Log.d("DOIN", loja.getNome() );
}
}
else Log.d("DOIN","NOT WOR");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(listaLojas !=null){
for(SQLloja loja : listaLoja.values()){
Log.d("DOIN2", loja.getNome() );
}
}
else Log.d("DOIN2","NOT WOR");
return listaLojas;*/
}
@Override
protected void onPostExecute(ArrayList<SQLloja> listaLojas){
listaLoja = listaLojas;
for(SQLloja loja : listaLoja){
Log.d("ASYNC24", loja.getNome() );
}
}
}
}
- 首先,您似乎期望某些text/char/varchar列始终填充表示双精度或整数的字符串。如果您确定这些列编号始终具有具有这些类型的值,那么这听起来像是数据库设计中的一个错误:PostgreSQL(与大多数其他RDMB一样)支持类型化列,特别是
和INTEGER
如果出于独立的原因确实需要将这些列保留为text/char/varchar,那么您应该真正捕获这些REAL
,因为它们可能会再次出现,具体取决于稍后在表中插入的内容NumberFormatException
- 其次,使用
很少是个好主意(请参阅)。它通常会导致错误。这样做的原因是,它隐藏了要检索的列。数据库或表的结构可能会改变,这与使用它的应用程序无关。假设列顺序迫使程序员知道数据库中列顺序的当前状态。 有两种解决方案(您实际上可以同时使用这两种方案):SELECT*
- 在
语句中明确使用列名(即SELECT
…):您会发现代码总体上更具可读性SELECT id、name、
- 使用
元数据查找该位置的列的名称(请参见),或者使用使用ResultSet
而不是columnLabel
的访问器columnIndex
- 在
com.example.basicmaponline.Intro$loadDatabase.doInBackground(Intro.java:102)
中看到一个java.lang.NumberFormatException:Invalid double:“a”
。我(也没有人)无法预测这个AsyncTaskOh中的内容,所以你是说我的pgAdmin应用程序的查询结果可能与android应用程序的查询结果不一样,即使它与相同且完全相同的查询一起使用??这就是我所做的,我没有使用“*”,现在它工作得很好!)非常感谢。