为什么程序会出错?

时间:2014-09-16 14:08:05

标签: android database sqlite

public class DB {
    String []teacher_name={"Сергей", "Кирилл", "Дмитрий", "Дарья"};
    String []teacher_surname={"Филатов", "Майборода", "Борисов", "Боброва"};
    String []name_subject={"Линейная алгебра", "Программирование 1", "Программирование 2", "Математический анализ"};
    String []emails={"filatovsrg94@gmail.com","emailKirill@mail.ru","borisovsky.n7@live.com","bobrova.94@bk.ru"};

     private static final String DB_NAME = "SCBIdb";
      private static final int DB_VERSION = 14;
      private static final String DB_TABLE = "Teachers";

      public static final String COLUMN_ID = "_id";
      public static final String COLUMN_PH = "img";
      public static final String COLUMN_TNM = "T_name";
      public static final String COLUMN_TSRNM = "T_surname";
      public static final String COLUMN_SUB = "Name_subject";

      private static final String DB_CREATE = 
        "create table " + DB_TABLE + "(" +
          COLUMN_ID + " integer primary key autoincrement, " +
          COLUMN_PH + " integer, " +
          COLUMN_TNM + " text" +
          COLUMN_TSRNM + " text"+
          COLUMN_SUB + " text" +
        ");";

      private final Context mCtx;


      private DBHelper mDBHelper;
      private SQLiteDatabase mDB;

      public DB(Context ctx) {
        mCtx = ctx;
      }

      // открыть подключение
      public void open() {
        mDBHelper = new DBHelper(mCtx, DB_NAME, null, DB_VERSION);
        mDB = mDBHelper.getWritableDatabase();
      }

      // закрыть подключение
      public void close() {
        if (mDBHelper!=null) mDBHelper.close();
      }

      // получить все данные из таблицы DB_TABLE
      public Cursor getAllData() {
        return mDB.query(DB_TABLE, null, null, null, null, null, null);
      }

      // добавить запись в DB_TABLE
      public void addRec(String name, String surname, String subject, int img) {
        ContentValues cv = new ContentValues();
        cv.put(COLUMN_TNM, name);
        cv.put(COLUMN_TSRNM, surname);
        cv.put(COLUMN_SUB, subject);
        cv.put(COLUMN_PH, img);
        mDB.insert(DB_TABLE, null, cv);
      }



      // класс по созданию и управлению БД
      private class DBHelper extends SQLiteOpenHelper {

        public DBHelper(Context context, String name, CursorFactory factory,
            int version) {
          super(context, name, factory, version);
        }

        // создаем и заполняем БД
        @Override
        public void onCreate(SQLiteDatabase db) {

          db.execSQL(DB_CREATE);

          ContentValues cv = new ContentValues();
          for (int i = 0; i < 4; i++) {
              cv.put(COLUMN_PH, R.drawable.user_sam);
              cv.put(COLUMN_TNM, teacher_name[i]);
              cv.put(COLUMN_TSRNM, teacher_surname[i]);
            cv.put(COLUMN_SUB, name_subject[i]);

            db.insert(DB_TABLE, null, cv);
          }
        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            db.execSQL("DROP TABLE IF EXISTS '" + DB_TABLE+"'");
            onCreate(db);
        }
      }
    }

我尝试运行该应用程序,但日志显示该表的某些字段不存在。此外我已经在此程序中创建了一个数据库,但之后我多次升级了该版本。请帮助!

2 个答案:

答案 0 :(得分:1)

      COLUMN_PH + " integer, " +
      COLUMN_TNM + " text" +
      COLUMN_TSRNM + " text"+
      COLUMN_SUB + " text" +

你的&#34;文本&#34;之后缺少一些逗号和空格。那列不会被创建 总是要确保你所有的逗号和空格都在应有的位置,大部分时间都是这样的错误问题。
和往常一样,卸载并重新安装应用程序或在更改后增加数据库版本代码。

答案 1 :(得分:0)

数据库列名是&#34; textT_surname&#34;,不是&#34; T_surname&#34; ,根据你的代码。 你搞砸了空白。