看板 java 關於我們 聯絡資訊
各位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
haha02: ORDER BY? 03/21 14:23
不好意思, 請問是指這個嗎? 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
icydream: 檢視table01的欄位順序 03/21 15:40
請問一下他所謂的欄位順序該如何檢視/修改呢? 是宣告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
haha02: 仔細看了一下 你不要打*把欄位依照你要的順序寫一次不就 03/21 19:50
haha02: 好了嗎? 03/21 19:50
ssccg: 取出時用cursor.getXXX(cursor.getColumnIndex("欄位名")) 03/21 21:47
ssccg: 這樣保證不會錯,就算你後來改sql... 03/21 21:48
ssccg: 用*就是create的順序,select有指定欄位就是指定的順序 03/21 21:48
ssccg: 另外看你的select很單純,那不要用rawQuery用query比較方便 03/21 21:50
Killercat: 你要不要考慮一下ORMLite.... 03/22 13:19
frankfgt: 先跪謝各位的建議解答~orm我再研究看看,因為我沒聽過~ 03/22 13:35
Killercat: ORM簡單的說,就是用annotation幫你指定資料結構以後 03/22 19:20
Killercat: 在幫你寫進資料庫,你就不用管那麼多可怕的SQL語法了 03/22 19:20
Killercat: Android上比較常用的就是ORMLite 你可以試試看 03/22 19:20
Killercat: iOS則是有自己的core data寫法 不過意思差不多 03/22 19:21
Deltaguita: 新手還是摸摸sql語法好 03/24 19:05