2015-07-14 3 views
-1

Я очень глупый новичок в Android-программировании, здесь я хочу сделать приложение для заметок в Android-студии Android. В этом случае я хочу создать табличный вызов Category_Table с 4 столбцами, называемыми CategId, CategName, Note и Currency. У меня есть учебник от google и т. Д. Но до сих пор у меня все еще есть эта проблема. Когда я хочу вставить некоторые данные в Category_Table, он говорит No Column с названием Currency в отчете Android Studio. Я не знаю, что делать, у меня есть googling, но все еще не могу решить эту проблему. Пожалуйста, дайте ответ, который я могу понять как программист-новичок. Спасибо. NB. Вот мой код: Add_Category код:Невозможно создать таблицу с 4 колонками SQLite Android Studio

public class AddCategory extends ActionBarActivity { 
    private static Button BtnIAdd; 
    private static Button BtnICancel; 
    EditText txtcategname, txtnote; 
    Spinner selectCurrency; 
    ArrayAdapter<CharSequence> adapterCurrency; 
    DatabaseHelper myDB; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_add_category); 
     myDB = new DatabaseHelper(this); 
     txtcategname = (EditText)findViewById(R.id.editText); 
     txtnote = (EditText)findViewById(R.id.editText2); 
     BtnICancel = (Button)findViewById(R.id.btnCancel); 
     BtnIAdd = (Button)findViewById(R.id.btnAdd); 

     //spinner 
     selectCurrency = (Spinner) findViewById(R.id.spin_selectCurrency); 
     adapterCurrency = ArrayAdapter.createFromResource(this, R.array.CurrencyName,android.R.layout.simple_spinner_item); 
     adapterCurrency.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     selectCurrency.setAdapter(adapterCurrency); 
     selectCurrency.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
      @Override 
      public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
       Toast.makeText(getBaseContext(), parent.getItemAtPosition(position)+" selected",Toast.LENGTH_LONG).show(); 
       String currencyValue = String.valueOf(parent.getSelectedItem()); 
      } 

      @Override 
      public void onNothingSelected(AdapterView<?> parent) { 

      } 
     }); 
     addCategData(); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.menu_add_category, menu); 
     return true; 
    } 

    public void addCategData(){ 
     BtnIAdd.setOnClickListener(
       new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 
         Toast.makeText(AddCategory.this,"Clicked", Toast.LENGTH_LONG).show(); 
         boolean isInserted = myDB.insertCategData(txtcategname.getText().toString(), 
           txtnote.getText().toString(), selectCurrency.getSelectedItem().toString()); 
         if (isInserted == true) 
          Toast.makeText(AddCategory.this,"Inserted", Toast.LENGTH_LONG).show(); 
         else 
          Toast.makeText(AddCategory.this,"Not Inserted", Toast.LENGTH_LONG).show(); 
        } 
       } 
     ); 
     BtnICancel.setOnClickListener(
       new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 
         finish(); 
        } 
       } 
     ); 
    } 



    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 

     //noinspection SimplifiableIfStatement 
     if (id == R.id.action_settings) { 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
} 
} 

И это один для DatabaseHelper класса

public class DatabaseHelper extends SQLiteOpenHelper { 
public static final String MyVillageSoftware = "MyVillageSoftware"; 
public static final String DATABASE_NAME = "Cashflow.db"; 
public static final String TABLE_Categ_NAME = "category_table"; 
public static final String COL1 = "CategId"; 
public static final String COL2 = "CategName"; 
public static final String COL3 = "Note"; 
public static final String COL4 = "Currency"; 



public DatabaseHelper(Context context) { 
    super(context, DATABASE_NAME, null, 1); 


} 

@Override 
public void onCreate(SQLiteDatabase db) { 
    db.execSQL("Drop Table" + TABLE_Categ_NAME); 
    /*db.execSQL("Create table " + TABLE_Categ_NAME + 
      "(CategID Integer PRIMARY KEY AUTOINCREMENT " + 
      "CategName Text" + 
      "Note Text" + 
      "Currency Text)");*/ 

} 

public boolean insertCategData(String categname, String note, String currency){ 
    SQLiteDatabase db = this.getWritableDatabase(); 
    ContentValues contentValues = new ContentValues(); 
    contentValues.put(COL2, categname); 
    contentValues.put(COL3, note); 
    contentValues.put(COL4, currency); 
    long result = db.insert(TABLE_Categ_NAME, null, contentValues); 
    if (result == -1) 
     return true; 
    else 
     return false; 

} 
public ArrayList<String>getAllCategory(){ 
    ArrayList<String> AllCategoryList = new ArrayList<String>(); 
    SQLiteDatabase db = this.getReadableDatabase(); 
    String selectCateg="Select * FROM " +TABLE_Categ_NAME; 
    Cursor cursor = db.rawQuery(selectCateg, null); 
    if(cursor.getCount()>0){ 
     while (cursor.moveToNext()){ 
      String categname=cursor.getString(cursor.getColumnIndex(COL2)); 
      AllCategoryList.add(COL2); 

     }return AllCategoryList; 
    } 

    return AllCategoryList; 

} 


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

спасибо перед ... :)

+1

За то, что я вижу ваше CREATE заявление TABLE комментируется, если удалить комментарий, то синтаксис неверен, вы должны разделить столбцы, которые вы хотите создать, запятыми. – zozelfelfo

+0

Ладно, я сожалею об этом, я делаю там какой-то эксперимент ... Но до этого заявление не комментируется – iWayan

ответ

1

1) Удалите приложение и установить снова.

2) выпуск «Столбец под названием« Валюта в отчете Android Studio » это потому, что после создания таблицы может быть добавлена ​​валюта столбца. поэтому для этого вам нужно определить версию базы данных (целочисленное значение, например, Ver = 1), и изменить версию БД всякий раз, когда вы делаете изменения в базе данных (увеличивайте значение int, например, Ver = 2), поэтому он будет вызывать onUpgrade() и отбросьте свои таблицы и создайте их снова. это решит вашу проблему.

EDIT: Вы дали, что база данных версии 1 по умолчанию в супер (контекст, DbName, cursorFactory, dbVersion)

public DatabaseHelper(Context context) { 
    super(context, DATABASE_NAME, null, 1); 
} 
+0

Хорошо, спасибо за ваш ответ, его помощь мне так полностью ... – iWayan

Смежные вопросы