首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Android中向SQLite表中插值

在Android中向SQLite表中插值
EN

Stack Overflow用户
提问于 2011-06-06 19:06:01
回答 7查看 134.4K关注 0票数 21

我是android应用程序开发方面的新手。我尝试通过以下代码将值插入到SQLite数据库中;

代码语言:javascript
复制
public class cashbook extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        SQLiteDatabase db;

        db = openOrCreateDatabase(
            "cashbookdata.db"
            , SQLiteDatabase.CREATE_IF_NECESSARY
            , null
            );

        final String Create_CashBook =
            "CREATE TABLE CashData ("
            + "id INTEGER PRIMARY KEY AUTOINCREMENT,"
            + "Description TEXT," 
            + "Amount REAL,"
            + "Trans INTEGER," 
            + "EntryDate TEXT);";

        db.execSQL(Create_CashBook);  
        final String Insert_Data="INSERT INTO CashData VALUES(2,'Electricity',500,1,'04/06/2011')";
        db.execSQL(Insert_Data);

它在模拟器上显示错误-应用程序CashBook已意外停止。

已创建数据库和表,但值插入不起作用。请帮我解决这个问题。谢谢。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2011-06-06 20:24:46

好的,这是完全可以工作的代码,请根据您的要求进行编辑

代码语言:javascript
复制
public class TestProjectActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    SQLiteDatabase db;
    db = openOrCreateDatabase( "Temp.db"        , SQLiteDatabase.CREATE_IF_NECESSARY        , null          );
    try {
        final String CREATE_TABLE_CONTAIN = "CREATE TABLE IF NOT EXISTS tbl_Contain ("
                + "ID INTEGER primary key AUTOINCREMENT,"
                + "DESCRIPTION TEXT,"
                + "expirydate DATETIME,"
                + "AMOUNT TEXT,"
                + "TRNS TEXT," + "isdefault TEXT);";
        db.execSQL(CREATE_TABLE_CONTAIN);
        Toast.makeText(TestProjectActivity.this, "table created ", Toast.LENGTH_LONG).show();
        String sql =
            "INSERT or replace INTO tbl_Contain (DESCRIPTION, expirydate, AMOUNT, TRNS,isdefault) VALUES('this is','03/04/2005','5000','tran','y')" ;       
                db.execSQL(sql);
    }
    catch (Exception e) {
        Toast.makeText(TestProjectActivity.this, "ERROR "+e.toString(), Toast.LENGTH_LONG).show();  
}}}

希望这篇文章对你有用..

请勿使用日期字段的文本可能是大小写问题仍有问题,请让我知道:)Pragna

票数 17
EN

Stack Overflow用户

发布于 2011-06-06 19:22:14

在一个自动递增的字段中插入一个值似乎很奇怪。

另外,您是否尝试过使用insert()方法而不是execSQL?

代码语言:javascript
复制
ContentValues insertValues = new ContentValues();
insertValues.put("Description", "Electricity");
insertValues.put("Amount", 500);
insertValues.put("Trans", 1);
insertValues.put("EntryDate", "04/06/2011");
db.insert("CashData", null, insertValues);
票数 56
EN

Stack Overflow用户

发布于 2011-06-06 20:13:56

如果捕捉到从execSQL调用抛出的任何错误,您会发现像这样的调试错误要容易得多。例如:

代码语言:javascript
复制
 try 
 {
      db.execSQL(Create_CashBook);  
 }
 catch (Exception e) 
 {
       Log.e("ERROR", e.toString());
 }
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6251093

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档