綁定帳號登入

Android 台灣中文網

打印 上一主題 下一主題

[討論] 請問這是錯在哪裡呢??

[複製連結] 查看: 1969|回覆: 8|好評: 0
跳轉到指定樓層
樓主
kira800917 | 收聽TA | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
發表於 2013-9-16 21:57
5碎鑽

09-16 21:55:56.249: W/dalvikvm(5159): threadid=1: thread exiting with uncaught exception (group=0x410a22d0)
09-16 21:55:56.264: E/AndroidRuntime(5159): FATAL EXCEPTION: main
09-16 21:55:56.264: E/AndroidRuntime(5159): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.text01/com.example.text01.Fragment2_1}: android.database.sqlite.SQLiteException: unrecognized token: \":\" (code 1): , while compiling: SELECT _id, sportname, weight, number, time, http://140.131.7.18/WebService.asmx, kocal, leve, sys_time FROM friends
09-16 21:55:56.264: E/AndroidRuntime(5159):         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2351)
09-16 21:55:56.264: E/AndroidRuntime(5159):         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
09-16 21:55:56.264: E/AndroidRuntime(5159):         at android.app.ActivityThread.access$600(ActivityThread.java:151)
09-16 21:55:56.264: E/AndroidRuntime(5159):         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1331)
09-16 21:55:56.264: E/AndroidRuntime(5159):         at android.os.Handler.dispatchMessage(Handler.java:99)
09-16 21:55:56.264: E/AndroidRuntime(5159):         at android.os.Looper.loop(Looper.java:155)
09-16 21:55:56.264: E/AndroidRuntime(5159):         at android.app.ActivityThread.main(ActivityThread.java:5485)
09-16 21:55:56.264: E/AndroidRuntime(5159):         at java.lang.reflect.Method.invokeNative(Native Method)
09-16 21:55:56.264: E/AndroidRuntime(5159):         at java.lang.reflect.Method.invoke(Method.java:511)
09-16 21:55:56.264: E/AndroidRuntime(5159):         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1028)
09-16 21:55:56.264: E/AndroidRuntime(5159):         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:795)
09-16 21:55:56.264: E/AndroidRuntime(5159):         at dalvik.system.NativeStart.main(Native Method)
09-16 21:55:56.264: E/AndroidRuntime(5159): Caused by: android.database.sqlite.SQLiteException: unrecognized token: \":\" (code 1): , while compiling: SELECT _id, sportname, weight, number, time, http://140.131.7.18/WebService.asmx, kocal, leve, sys_time FROM friends
09-16 21:55:56.264: E/AndroidRuntime(5159):         at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
09-16 21:55:56.264: E/AndroidRuntime(5159):         at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:882)
09-16 21:55:56.264: E/AndroidRuntime(5159):         at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:493)
09-16 21:55:56.264: E/AndroidRuntime(5159):         at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
09-16 21:55:56.264: E/AndroidRuntime(5159):         at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
09-16 21:55:56.264: E/AndroidRuntime(5159):         at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37)
09-16 21:55:56.264: E/AndroidRuntime(5159):         at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:65)
09-16 21:55:56.264: E/AndroidRuntime(5159):         at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1370)
09-16 21:55:56.264: E/AndroidRuntime(5159):         at android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1217)
09-16 21:55:56.264: E/AndroidRuntime(5159):         at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1088)
09-16 21:55:56.264: E/AndroidRuntime(5159):         at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1256)
09-16 21:55:56.264: E/AndroidRuntime(5159):         at com.example.text01.Fragment2_1.getCursor(Fragment2_1.java:153)
09-16 21:55:56.264: E/AndroidRuntime(5159):         at com.example.text01.Fragment2_1.show(Fragment2_1.java:163)
09-16 21:55:56.264: E/AndroidRuntime(5159):         at com.example.text01.Fragment2_1.onCreate(Fragment2_1.java:71)
09-16 21:55:56.264: E/AndroidRuntime(5159):         at android.app.Activity.performCreate(Activity.java:5066)
09-16 21:55:56.264: E/AndroidRuntime(5159):         at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1101)
09-16 21:55:56.264: E/AndroidRuntime(5159):         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2307)
09-16 21:55:56.264: E/AndroidRuntime(5159):         ... 11 more

最佳答案

查看完整內容

使用SQLite是因為要將數據儲存在手機端,按照你的邏輯來說,你的資料是不是根本就不在SQLite裡面呢?而是你自己另外取得的。 如果是這樣的話,你就可以省略SQLite的操作了。 如果真的是要使用 SQLite 裡面的資料,你的作法應該是 SQLite 裡有有1個table,然後這個 table 裡面有好幾個欄位,假設是 a,b,c,d,e,f,g,c=url 那你的語法應該是再經過讀取 cursor 中的內容去取得你在SQLite中儲存的網址。 ...
「用Android 就來APK.TW」,快來加入粉絲吧!
Android 台灣中文網(APK.TW)
收藏收藏 分享分享 分享專題
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

沙發
ploglin | 收聽TA | 只看該作者
發表於 2013-9-16 21:57
使用SQLite是因為要將數據儲存在手機端,按照你的邏輯來說,你的資料是不是根本就不在SQLite裡面呢?而是你自己另外取得的。
如果是這樣的話,你就可以省略SQLite的操作了。

如果真的是要使用 SQLite 裡面的資料,你的作法應該是 SQLite 裡有有1個table,然後這個 table 裡面有好幾個欄位,假設是 a,b,c,d,e,f,g,c=url

那你的語法應該是

  1. Cursor cursor = db.query(TABLE_NAME, new String[]{"a","b","c","d","e"}, null, null, null, null, null);
複製代碼
再經過讀取 cursor 中的內容去取得你在SQLite中儲存的網址。
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

板凳
whl | 收聽TA | 只看該作者
發表於 2013-9-16 23:44
很明顯啊! Sql 指令有問題 ,請檢查 fragment2_1 的第 153 行。

評分

參與人數 2碎鑽 +1 幫助 +2 收起 理由
kira800917 + 1 + 1 讚一個!
ploglin + 1

查看全部評分

用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

地板
 樓主| kira800917 | 收聽TA | 只看該作者
發表於 2013-9-17 18:04
package com.example.text01;

import static android.provider.BaseColumns._ID; //存取的id

import java.text.DecimalFormat;

import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapPrimitive;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;

import static com.example.text01.DbConstants.TIME;
import static com.example.text01.DbConstants.NUMBER;
import static com.example.text01.DbConstants.WEIGHT;
import static com.example.text01.DbConstants.TABLE_NAME;
import static com.example.text01.DbConstants.SPORTNAME;
import static com.example.text01.DbConstants.URL;
import static com.example.text01.DbConstants.KOCAL;
import static com.example.text01.DbConstants.LEVE;
import static com.example.text01.DbConstants.SYS_TIME;

import android.app.Activity;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.TextView;

public class Fragment2_1 extends Activity {

        private DBHelper dbhelper = null;

        private TextView result = null, listview;

        private Button btnAdd = null;
        private TextView number, weight, time;

        String c, d;
        private Long e, f;

        private Button bt;

        private static final String NAMESPACE = "http://tempuri.org/";
        private static final String URL = "http://140.131.7.18/WebService.asmx";
        private static final String SOAP_ACTION = "http://tempuri.org/up";
        private static final String METHOD_NAME = "up";

        String s_id = "ddddddddddddddddddddd", s_name = "0", s_time = "0",
                        sy_system = "0", s_karlo = "0", s_leavel = "1", flag;

        @Override
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                requestWindowFeature(Window.FEATURE_NO_TITLE);
                getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                                WindowManager.LayoutParams.FLAG_FULLSCREEN);
                setContentView(R.layout.fragment2_1);

                initView(); // 顯示螢幕上的東西
                openDatabase(); // 開起sql
//                show(); // 呼叫下面的程式,小框框
                result.setText("歷史紀錄:");

                bt = (Button) findViewById(R.id.bttt);
                bt.setOnClickListener(new View.OnClickListener() {
                        public void onClick(View v) {


                }});

        }

        @Override
        protected void onDestroy() {
                super.onDestroy();
                closeDatabase();
        }

        private void openDatabase() {
                dbhelper = new DBHelper(this);
        }

        private void closeDatabase() {
                dbhelper.close();
        }

        private void initView() {
                result = (TextView) findViewById(R.id.txtResult);
                listview = (TextView) findViewById(R.id.listview);

        }

        private Cursor getCursor() { //
                SQLiteDatabase db = dbhelper.getReadableDatabase(); // 開啟資料庫寫入資料
                String[] columns = { _ID, SPORTNAME, WEIGHT, NUMBER, TIME, URL, KOCAL,
                                LEVE, SYS_TIME }; // 宣告columns放入以下的值
                // id,name,tel,email

                Cursor cursor = db.query(TABLE_NAME, columns, null, null, null, null,
                                null); // table
                                                // name這是這個table的欄位,columns是對上面的string,不知道後面null是做甚麼的
                startManagingCursor(cursor); // 開始執行

                return cursor;
        }

        private void show() {

                Cursor cursor = getCursor(); // 這是排序的sql的 函數

                StringBuilder resultData = new StringBuilder(""); // 以下resultdata來顯示id,name,tel,email的值

                while (cursor.moveToNext()) {
                        String id = cursor.getString(0); // 陣列1號
                        String sportname = cursor.getString(1); // 陣列1號
                        String weight = cursor.getString(2); // 陣列2號
                        String number = cursor.getString(3); // 陣列3號
                        String time = cursor.getString(4); // 陣列4號
                        // String url = cursor.getString(5);
                        String sys_time = cursor.getString(8);
                        String kocal = cursor.getString(6);
                        String leve = cursor.getString(7);

                        if (sys_time == null) {

                        } else if (weight == null || time == null) {

                        } else {

                        }

                }

                listview.setText(resultData); // 讓result來顯示文字(值為resultData)
        }

        public void SN(){
                Thread networkThread = new Thread() {
                @Override
                public void run() {

                        SoapObject request = new SoapObject(NAMESPACE,
                                        METHOD_NAME);

                        request.addProperty("s_id", s_id);
                        request.addProperty("s_name", s_name);
                        request.addProperty("s_time", s_time);
                        request.addProperty("sy_system", sy_system);
                        request.addProperty("s_karlo", s_karlo);
                        request.addProperty("s_name", s_name);
                        request.addProperty("s_leavel", s_leavel);

                        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
                                        SoapEnvelope.VER11);
                        envelope.dotNet = true;
                        envelope.setOutputSoapObject(request);
                        HttpTransportSE androidHttpTransport = new HttpTransportSE(
                                        URL);

                        Log.i("myApp", "!!!!!!!!!!!!!!!!!!!!!");

                        try {
                                /** 開始呼叫 Web Service */
                                androidHttpTransport.call(SOAP_ACTION, envelope);
                                SoapPrimitive response = (SoapPrimitive) envelope
                                                .getResponse();

                                flag = response.toString();

                                Log.i("myApp", response.toString());

                        } catch (Exception e) {
                                e.printStackTrace();

                        }

                }

        };
        networkThread.start();
        }
}

這是我的程式碼。 如果show()斜線弄掉後運行就會錯誤??
但是如果不加sn(),show()斜線弄掉就不會錯...
不知道錯在哪...
請幫幫我>  <  
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

5
ploglin | 收聽TA | 只看該作者
發表於 2013-9-18 11:23
程式本身是沒有錯的,依照你的錯誤訊息來看,你所組出的 SQL 語法為

  1. SELECT _id, sportname, weight, number, time, http://140.131.7.18/WebService.asmx, kocal, leve, sys_time FROM friends
複製代碼
上面有一串網址,雖然我不清楚你為什麼要這麼做,但如果這個語法是你要的,那你只要把網址前後用引號包起來就好了,我想你的 table 裡面,應該沒有欄位是這個網址吧。
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

6
 樓主| kira800917 | 收聽TA | 只看該作者
發表於 2013-9-18 11:51

恩恩!! 因為手機端sqllite要把資料撈出來並上傳到websever 而那段一串網址就是接收端。
所以我該怎麼改?? 才不會讓她還沒顯示畫面就錯誤呢??  
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

7
 樓主| kira800917 | 收聽TA | 只看該作者
發表於 2013-9-18 14:02
ploglin 發表於 2013-9-18 12:05
使用SQLite是因為要將數據儲存在手機端,按照你的邏輯來說,你的資料是不是根本就不在SQLite裡面呢?而是你 ...

沒啦!! 那上面是先假裝測試的值,所以才先用其他的string 當值上傳。
只是資料庫跟上傳的code 一起話就會錯,但是剛剛已經解決瞜!!
謝謝版主!!^^
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

8
ploglin | 收聽TA | 只看該作者
發表於 2013-9-18 14:51
有解決就好,繼續加油吧!
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

9
 樓主| kira800917 | 收聽TA | 只看該作者
發表於 2013-9-18 15:36
ploglin 發表於 2013-9-18 14:51
有解決就好,繼續加油吧!

恩恩!! =) 謝謝大大瞜^^
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則