在Android中将值插入SQLite表

Sin*_*ssy 21 sqlite android

我是android app developpement的新手.我尝试通过以下代码将值插入SQLite数据库;

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);
Run Code Online (Sandbox Code Playgroud)

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

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

Jon*_*Jon 56

似乎奇怪的是将值插入到自动递增的字段中.

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

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);
Run Code Online (Sandbox Code Playgroud)

  • 每个Android开发人员都应该知道如何使用adb logcat工具.打开终端或命令提示符并导航到您放置/安装android SDK文件夹的位置,然后进入工具,平台工具或平台工具(文件夹名称随时间变化).在其中一个文件夹中,您应该找到"adb"二进制文件.在与adb二进制文件相同的文件夹中,运行命令`adb logcat`. (3认同)

And*_*oid 17

okk这是完全正常工作的代码根据您的要求编辑它

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();  
}}}
Run Code Online (Sandbox Code Playgroud)

希望这对你有用..
不要使用TEXT作为日期字段可能是套管问题仍然有问题让我知道:) Pragna