2017-11-25 145 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);