[問題] Android SQlite的問題請益(急)

看板java作者 (iverson)時間9年前 (2015/03/21 13:52), 9年前編輯推噓4(4011)
留言15則, 6人參與, 最新討論串1/1
各位coder好, 小弟不才是半路出師的Java開發菜鳥.. 對於SQlite的概念還是很不清楚 想請教一個問題希望可以得到幫忙:( 麻煩一下了 以下是code.. ------------------------------------------------------------ 我是寫一個類似表單的輸入Layout 像這樣.. <這是insert.java> KD:________ KT:_________ CD:________ CT:_________ . . . . 共有10個欄位, 現在遇到的問題是, 當我存入資料庫時, 在取出來順序就亂掉了.. now是我的一個Spinner的值, 所以就沒有特別去轉換, spinner = (Spinner) findViewById(R.id.mySpinner); spinner.setAdapter(listAdapter); now = list[0]; spinner.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> arg0, View arg1, int position, long arg3) { now = list[position]; } try { cv.put("title", now); cv.put("TextKD", EditTextKD.getText().toString()); cv.put("TextKT", EditTextKT.getText().toString()); cv.put("TextCD", EditTextCD.getText().toString()); cv.put("TextCT", EditTextCT.getText().toString()); cv.put("TextMT", EditTextMT.getText().toString()); cv.put("TextMD", EditTextMD.getText().toString()); cv.put("TextYT", EditTextYT.getText().toString()); cv.put("TextYD", EditTextYD.getText().toString()); cv.put("TextFus", EditTextFus.getText().toString()); cv.put("TextBel", EditTextBel.getText().toString()); db.insert("table01", null, cv); } catch (Exception e) { e.getMessage(); } ---------------------------------------------------------- 取出: Bundle b2 = this.getIntent().getExtras(); if (b2 != null) { s1 = b2.getInt("key1");// 抓取來自b2的key1 cursor = db.rawQuery("SELECT * FROM table01 WHERE _id = '" + s1 + "'", null); cursor.moveToFirst(); title = cursor.getString(1); if (title.equals("醫院UD藥局")) { spinner.setSelection(0); } else if (title.equals("醫院門診")) { spinner.setSelection(1); } else if (title.equals("醫院1F")) { spinner.setSelection(2); } else if (title.equals("醫院7F")) { spinner.setSelection(3); } text = cursor.getString(2); TextKD = cursor.getString(3); TextKT = cursor.getString(4); TextCD = cursor.getString(5); TextCT = cursor.getString(6); TextMT = cursor.getString(7); TextMD = cursor.getString(8); TextYT = cursor.getString(9); TextYD = cursor.getString(10); TextFus = cursor.getString(11); TextBel = cursor.getString(12); EditTextKD.setText(TextKD); EditTextKT.setText(TextKT); EditTextCD.setText(TextCD); EditTextCT.setText(TextCT); EditTextMD.setText(TextMD); EditTextMT.setText(TextMT); EditTextYT.setText(TextYT); EditTextYD.setText(TextYD); EditTextFus.setText(TextFus); EditTextBel.setText(TextBel); ----------------------------------------------- 才疏學淺.. 已經找了8小時還得不齊解 , 真的苦無門路去詢問.. 才上來煩請大家的意見.. 謝謝 想知道他getString的數字到底是哪來的排序阿~"~ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.174.188.223 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1426917135.A.D9A.html ※ 編輯: frankfgt (1.174.188.223), 03/21/2015 13:54:31 ※ 編輯: frankfgt (1.174.188.223), 03/21/2015 13:54:55 ※ 編輯: frankfgt (1.174.188.223), 03/21/2015 13:56:17

03/21 14:23, , 1F
ORDER BY?
03/21 14:23, 1F
不好意思, 請問是指這個嗎? db.update("table01", cv, "_id=" + s1, null); ※ 編輯: frankfgt (1.174.188.223), 03/21/2015 14:28:20 if (which == 1) { cursor.moveToPosition(arg2); // 取得此筆資料的第0個欄位, 即 id int c = cursor.getInt(0); Intent i = new Intent( MainActivity.this, Update.class); Bundle b = new Bundle(); b.putInt("key1", c);// 將ID放入key1 i.putExtras(b); startActivity(i); 這是我將主頁面帶去修改頁面的指令 ※ 編輯: frankfgt (1.174.188.223), 03/21/2015 14:33:03

03/21 15:40, , 2F
檢視table01的欄位順序
03/21 15:40, 2F
請問一下他所謂的欄位順序該如何檢視/修改呢? 是宣告create_table那段裡面的順序嗎?? final static String create_table = "CREATE TABLE " + table_name + "(_id INTEGER PRIMARY KEY, title TEXT, PhotoRef TEXT," + "TextKD TEXT,TextKT TEXT,TextCD TEXT,TextCT TEXT,TextMD TEXT," + "TextMT TEXT,TextYD TEXT,TextYT TEXT,TextFus TEXT,TextBel TEXT,Time TEXT)"; ※ 編輯: frankfgt (1.174.188.223), 03/21/2015 15:58:01

03/21 19:50, , 3F
仔細看了一下 你不要打*把欄位依照你要的順序寫一次不就
03/21 19:50, 3F

03/21 19:50, , 4F
好了嗎?
03/21 19:50, 4F

03/21 21:47, , 5F
取出時用cursor.getXXX(cursor.getColumnIndex("欄位名"))
03/21 21:47, 5F

03/21 21:48, , 6F
這樣保證不會錯,就算你後來改sql...
03/21 21:48, 6F

03/21 21:48, , 7F
用*就是create的順序,select有指定欄位就是指定的順序
03/21 21:48, 7F

03/21 21:50, , 8F
另外看你的select很單純,那不要用rawQuery用query比較方便
03/21 21:50, 8F

03/22 13:19, , 9F
你要不要考慮一下ORMLite....
03/22 13:19, 9F

03/22 13:35, , 10F
先跪謝各位的建議解答~orm我再研究看看,因為我沒聽過~
03/22 13:35, 10F

03/22 19:20, , 11F
ORM簡單的說,就是用annotation幫你指定資料結構以後
03/22 19:20, 11F

03/22 19:20, , 12F
在幫你寫進資料庫,你就不用管那麼多可怕的SQL語法了
03/22 19:20, 12F

03/22 19:20, , 13F
Android上比較常用的就是ORMLite 你可以試試看
03/22 19:20, 13F

03/22 19:21, , 14F
iOS則是有自己的core data寫法 不過意思差不多
03/22 19:21, 14F

03/24 19:05, , 15F
新手還是摸摸sql語法好
03/24 19:05, 15F
文章代碼(AID): #1L3GSFsQ (java)