2017-02-22 69 views
-2

我不知道什麼是錯在這裏android.database.sqlite.SQLiteException:沒有這樣的表:學生(代碼1):在編譯:

package mytwistedidea.wordpress.com.testingdata; 

import android.content.ContentValues; 
import android.content.Context; 
import android.database.Cursor; 
import android.database.SQLException; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteOpenHelper; 
import android.os.Message; 
import android.util.Log; 

import java.util.ArrayList; 

/** 
* Created by Nishant on 22-02-2017. 
*/ 

public class DatabaseHelper { 

    static MyHelper helper; 

    public DatabaseHelper(Context context){ 
     helper = new MyHelper(context); 
    } 

    public long insertStudent(int roll, String name, String attended){ 
     SQLiteDatabase sqLiteDatabase = helper.getWritableDatabase(); 
     ContentValues contentValues = new ContentValues(); 
     contentValues.put(MyHelper.ROLL,roll); 
     contentValues.put(MyHelper.NAME,name); 
     contentValues.put(MyHelper.ATTENDED,attended); 

     Long id = sqLiteDatabase.insert(MyHelper.TABLE_NAME_STUDENT,null,contentValues); 
     sqLiteDatabase.close(); 
     return id; 
    } 

    public static ArrayList<String> getStudent(Integer roll){ 

     SQLiteDatabase sqLiteDatabase = helper.getReadableDatabase(); 
     ArrayList<Integer> previousRoll = new ArrayList<Integer>(); 
     String columns[] = {MyHelper.ROLL}; 

     String query = "SELECT * FROM "+MyHelper.TABLE_NAME_STUDENT+" WHERE roll='" + roll; 

     Cursor cursor = sqLiteDatabase.rawQuery(query,null); 

     if (cursor != null) { 
      cursor.moveToFirst(); 
     } 
     ArrayList<String> arrayList = new ArrayList<String>(); 

     arrayList.add(cursor.getString(cursor.getColumnIndex(MyHelper.ROLL))); 
     arrayList.add(cursor.getString(cursor.getColumnIndex(MyHelper.NAME))); 
     arrayList.add(cursor.getString(cursor.getColumnIndex(MyHelper.ATTENDED))); 

     return arrayList; 
     /* 
     Cursor cursor = sqLiteDatabase.query(MyHelper.TABLE_NAME_STUDENT,columns,null,null,null,null,null); 
     if(cursor.moveToFirst()){ 
      do{ 
       previousRoll.add(Integer.parseInt(cursor.getString(cursor.getColumnIndex(MyHelper.ROLL)))); 
      }while (cursor.moveToNext()); 
     }if(previousRoll.size() == 0){ 
      previousRoll.add(0,0); 
      return previousRoll; 
     } 
     return previousRoll;*/ 
    } 

    public static ArrayList<String> getAllStudent(){ 

     SQLiteDatabase sqLiteDatabase = helper.getReadableDatabase(); 
     ArrayList<String> previousStudent = new ArrayList<String>(); 
     String columns[] = {MyHelper.ROLL,MyHelper.NAME,MyHelper.ATTENDED}; 

     Cursor cursor = sqLiteDatabase.query(MyHelper.TABLE_NAME_STUDENT,columns,null,null,null,null,null); 
     if(cursor.moveToFirst()){ 
      do{ 
       previousStudent.add(cursor.getString(cursor.getColumnIndex(MyHelper.ROLL))); 
       previousStudent.add(cursor.getString(cursor.getColumnIndex(MyHelper.NAME))); 
       previousStudent.add(cursor.getString(cursor.getColumnIndex(MyHelper.ATTENDED))); 
      }while (cursor.moveToNext()); 
     }if(previousStudent.size() == 0){ 
      previousStudent.add(0," "); 
      return previousStudent; 
     } 
     return previousStudent; 
    } 


    public static ArrayList<Integer> getStudentRoll(){ 

     SQLiteDatabase sqLiteDatabase = helper.getReadableDatabase(); 
     ArrayList<Integer> previousRoll = new ArrayList<Integer>(); 
     String columns[] = {MyHelper.ROLL}; 

     Cursor cursor = sqLiteDatabase.query(MyHelper.TABLE_NAME_STUDENT,columns,null,null,null,null,null); 
     if(cursor.moveToFirst()){ 
      do{ 
       previousRoll.add(Integer.parseInt(cursor.getString(cursor.getColumnIndex(MyHelper.ROLL)))); 
      }while (cursor.moveToNext()); 
     }if(previousRoll.size() == 0){ 
      previousRoll.add(0); 
      return previousRoll; 
     } 
     return previousRoll; 
    } 

    public static ArrayList<String> getStudentName(){ 
     SQLiteDatabase sqLiteDatabase = helper.getReadableDatabase(); 
     ArrayList<String> previousName = new ArrayList<String>(); 
     String columns[] = {MyHelper.NAME}; 

     Cursor cursor = sqLiteDatabase.query(MyHelper.TABLE_NAME_STUDENT,columns,null,null,null,null,null); 
     if(cursor.moveToFirst()){ 
      do{ 
       previousName.add(cursor.getString(cursor.getColumnIndex(MyHelper.ROLL))); 
      }while (cursor.moveToNext()); 
     }if(previousName.size() == 0){ 
      previousName.add(0," "); 
      return previousName; 
     } 
     return previousName; 

    } 

    public static ArrayList<Integer> getStudentAttendence(){ 
     SQLiteDatabase sqLiteDatabase = helper.getReadableDatabase(); 
     ArrayList<Integer> previousAttendence = new ArrayList<Integer>(); 
     String columns[] = {MyHelper.ATTENDED}; 

     Cursor cursor = sqLiteDatabase.query(MyHelper.TABLE_NAME_STUDENT,columns,null,null,null,null,null); 
     if(cursor.moveToFirst()){ 
      do{ 
       previousAttendence.add(Integer.parseInt(cursor.getString(cursor.getColumnIndex(MyHelper.ATTENDED)))); 
      }while (cursor.moveToNext()); 
     }if(previousAttendence.size() == 0){ 
      previousAttendence.add(0,0); 
      return previousAttendence; 
     } 
     return previousAttendence; 

    } 


    class MyHelper extends SQLiteOpenHelper{ 
     private static final String DATABASE_NAME = "mystudent.db"; 
     private static final String TABLE_NAME_STUDENT = "student"; 
     private static final int DATABASE_VERSION = 1; 

     private static final String NAME = "name"; 
     private static final String ROLL = "roll"; 
     private static final String ATTENDED = "attended"; 

     private static final String CREATE_TABLE = "CREATE TABLE"+TABLE_NAME_STUDENT+ 
       "("+ROLL+" INTEGER PRIMARY KEY, "+ 
       NAME+" VARCHAR(255), "+ 
       ATTENDED+" INTEGER);"; 

     private static final String DROP_STUDENT = "DROP TABLE IF EXISTS "+TABLE_NAME_STUDENT; 

     private Context context; 

     public MyHelper(Context context){ 
      super(context,DATABASE_NAME,null,DATABASE_VERSION); 
      this.context = context; 
     } 

     @Override 
     public void onCreate(SQLiteDatabase db) { 
      if(db != null){ 
       try{ 
       db.execSQL(CREATE_TABLE); 
       } 
       catch (SQLException e){ 
        e.printStackTrace(); 
       } 
      } 
     } 

     @Override 
     public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
      try{ 
       db.execSQL(DROP_STUDENT); 
       onCreate(db); 
      } 
      catch (SQLException e){ 
       e.printStackTrace(); 
      } 
     } 

     @Override 
     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
      try{ 
       db.execSQL(DROP_STUDENT); 
       onCreate(db); 
      } 
      catch (SQLException e){ 
       e.printStackTrace(); 
      } 
     } 

     } 
    } 

我是新來的數據庫。
我不知道哪個部分是錯的,所以我發佈了整個代碼。

+1

請閱讀以下的空間:[問] [MCVE] [幫助/關於話題] –

+0

好感謝。請參閱代碼。 –

回答

1

的問題是在低於線

私有靜態最後字符串CREATE_TABLE = 「CREATE TABLE」 + TABLE_NAME_STUDENT + 「(」 + ROLL +」 INTEGER PRIMARY KEY, 「+ NAME +」 VARCHAR(255), 「+ ATTENDED +」INTEGER「;」;

應該像

私有靜態最後字符串CREATE_TABLE =「CREATE TABLE 「+ TABLE_NAME_STUDENT + 」(「 + ROLL +」 INTEGER PRIMARY KEY, 「+ NAME +」 VARCHAR(255), 「+ ATTENDED +」INTEGER「;」;

應該有間 「CREATE TABLE」 和TABLE_NAME_STUDENT

+0

不能繼續工作。相同的錯誤在行「Cursor cursor = sqLiteDatabase.query(MyHelper.TABLE_NAME_STUDENT,columns,null,null,null,null,null);」 –

+1

嘗試卸載應用程序,然後再次運行它,我測試了它的代碼只是做一個改變。 ()+「+」+「INTEGER);」; * – Gaurav

+0

謝謝它的工作原理。這是一個很好的解決方案。 –

相關問題