作者frankfgt (iverson)
看板javA
標題[問題] Android SQlite的問題請益(急)
時間Sat Mar 21 13:52:11 2015
各位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