【问题标题】:displaying the database and creating the database in android显示数据库并在android中创建数据库
【发布时间】:2011-08-19 08:41:09
【问题描述】:

我想用 3 列纬度、经度和地址显示数据库。我尝试使用游标,但应用程序崩溃。我正在为 onlocationchanged 方法中的按钮编写侦听器。该按钮是保存地理点,它会更新用户的纬度、经度和地址。我还有一个名为 find geopoint 的按钮,用于显示数据库。这是我的代码。我在 onlocationchanged 中写了这个。

  try{
          db.execSQL("CREATE TABLE "+Geo_Create_Table+" (Latitude INTEGER,Longtitude INTEGER ,ID INTEGER);");

     }
     catch(Exception e){
               e.printStackTrace();
     }
     try{
        db.execSQL("INSERT INTO "+Geo_Create_Table +" VALUES (" +lat +"," +lon +","+1+");");


    }
    catch (Exception e) {

    }

我使用光标显示数据库,但问题仍然存在,请帮助

【问题讨论】:

  • 能否提供崩溃的logcat。问题发生在应用程序的哪个位置?仅从提供的信息来看,您似乎正在尝试将双精度(纬度和经度)插入数据类型设置为 INTEGER 的列中。这会导致问题。尝试将 INTEGER 更改为 double。

标签: android sqlite


【解决方案1】:
db.execSQL("CREATE TABLE "+Geo_Create_Table+" (Latitude INTEGER,Longtitude INTEGER ,ID INTEGER)");

db.execSQL("INSERT INTO "+Geo_Create_Table +" VALUES (" +lat +"," +lon +","+1+")");

【讨论】:

  • 你只是复制了部分问题吗?
  • No.removing ';'导致问题
【解决方案2】:

您不应该使用 execSQL,而应该使用 insert 方法。

您的请求应包含“?”,并且值应作为参数添加

你确定 lat 和 lon 是整数吗?

在 sqlite 中声明 Integer 列的正确方法是 NUMERIC

你应该让 sqlite 自己处理 ID 部分

另外,如果你运行 CREATE TABLE 两次,它会崩溃。如果必须,请运行 CREATE TABLE IF NOT EXISTS。

你到底得到了什么异常?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 2013-08-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多