2017-11-25 111 views
-3

wehenever我看大約SQLite的教程,我總是看到,像INT或字符串(TEXT,VARCHAR)值被用來(與REAL或DOUBLE工作)。例如,我如何使用DOUBLE? 我創建了一個值爲DOUBLE的表格,我想從EditText插入一個值DOUBLE。每當我嘗試,我的應用程序崩潰,爲什麼?SQLite的數字數據類型

+0

你可以發佈你的代碼和LogCat? –

+0

注意谷歌的'sqlite數據類型'? –

回答

0

如何使用DOUBLE,例如?

列類型(例如INT VARCHAR DOUBLE甚至RUMPLESTILTSKIN將被接受作爲列鍵入例如CREATE TABLE mytable (data1 RUMPLESTILTSKIN)並不重要

這是由於SQLite列類型的靈活性如解釋here,其也引用Datatypes In SQLite Version 3

要存儲雙精度數據,只需將其存儲爲一個字符串(或者在使用SQLite數據庫insert方法時通過ContentValues傳遞的雙精度數據),例如,基於yourEditText.getText().toString()並使用遊標的getDouble方法將其作爲雙倍數來檢索。上面的鏈路具有的如何getDouble工作,即它總是返回一個雙(除了如果數據已被存儲爲BLOB,在這種情況下發生異常(截留在實施例中的鏈接))的例子。

實例(其中db是SQLiteDatabase): -

1使用execSQL和SQL

// Not recommended 
String sql = "INSERT INTO yourtable (yourdoublecolum) VALUES(" + youredittext.getText.toString() + ")"; 
db.execSQL(sql); 

2使用SQLitedatabase insert方法與字符串

// Not recommended 
ContentValues cv = new ContentValues(); 
cv.put("yourdoubleccolumn", youredittext.getText.toString()); 
long insertedid = db.insert("yourtable",null,cv); 

3使用SQLitedata insert方法與雙

// Better but still potential for exception when parsing so 
// need to ensure that youredittext is acceptable. 
ContentValues cv = new ContentValues(); 
cv.put("yourdoubleccolumn", Double.parseDouble(youredittext.getText.toString())); 
long insertedid = db.insert("yourtable",null,cv);