【问题标题】:Creating database table on runtime in sqlite在 sqlite 运行时创建数据库表
【发布时间】:2014-03-31 07:09:14
【问题描述】:

由于我是 android 编程新手,我正在创建一个表格并用 edittext 中的文本命名它。我该怎么做。搜索了问题,但没有得到任何答案。而且我的应用程序需要在运行时创建许多表。我正在使用 SQLiteOpenHelper 类,所以请帮我做。我已经创建了一个创建表的函数,并且在 onCreate()/onUpgrade 函数中什么也没写。

public void createClass(String table){
    shuddhHelper = new DbHelper(shuddhContext);
    SQLiteDatabase db = shuddhHelper.getWritableDatabase();
    db.execSQL("CREATE TABLE " + table + " (" +
            STUDENT_NAME + " TEXT NOT NULL, " +
            ROLL_NO + " TEXT PRIMARY KEY, " +
            STUDENT_PHONE + " INTEGER NOT NULL, " +
            PARENT_PHONE + " INTEGER NOT NULL);"                
            );      
}

并在 onClickListener 中像这样调用函数

className = "" + spinner.getSelectedItem().toString() + " "
            + sessionStart.getText().toString() + " - "
            + sessionEnd.getText().toString();
    AMData classtable = new AMData(AddScreen.this);
    classtable.open();
    classtable.createClass(className);
    classtable.close();

     Intent myIntent = new Intent(AddScreen.this, NewStudent.class);
     myIntent.putExtra("className", className);
     startActivity(myIntent);

在这里打开和关闭函数:

public AMData open() {
    shuddhHelper = new DbHelper(shuddhContext);
    shuddhDataBase = shuddhHelper.getWritableDatabase();
    return this;
}
public void close(){
    shuddhHelper.close();
}

【问题讨论】:

标签: android sqlite sqliteopenhelper


【解决方案1】:

您的表名错误,因为它包含空格。

尝试以下方法:

className = "" + spinner.getSelectedItem().toString() + "_"
        + sessionStart.getText().toString() + "-"
        + sessionEnd.getText().toString();

顺便说一句:如果您必须连接多个字符串,最好使用 StringBuilder。它使用更少的内存空间和计算时间。

String class = new StringBuilder().append(spinner.getSelectedItem().toString())
                                  .append("_")
                                  .append(sessionStart.getText().toString())
                                  .append("-")
                                  .append(sessionEnd.getText().toString())
                                  .toString();

【讨论】:

  • 请发布错误堆栈跟踪。如果不知道出了什么问题,就很难调试。
猜你喜欢
  • 2010-11-04
  • 1970-01-01
  • 2018-06-21
  • 1970-01-01
  • 2021-05-12
  • 2013-02-23
  • 2012-09-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多