2017-02-25 1 views
0

다음과 같이 DB Helper 클래스를 만들고 테이블에 데이터를 삽입하는 데 문제가 있습니다.안드로이드에 Sqlite 데이터베이스에 데이터를 저장할 수 없습니다?

이 내 DB 도우미입니다 :

import android.content.ContentValues; 
import android.content.Context; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteOpenHelper; 


import java.util.ArrayList; 
import java.util.List; 

/** 
* Created by Admin on 2/24/2017. 
*/ 
public class CompanyDatabaseHandler extends SQLiteOpenHelper { 

    // All Static variables 
    // Database Version 
    private static final int DATABASE_VERSION = 5; 

    // Database Name 
    private static final String DATABASE_NAME = "databaseofcompany"; 

    // COMPANY table name 
    private static final String TABLE_COMPANY = "detailsofcompany"; 
    // COMPANY Table Columns names 
    private static final String KEY_ID="_id"; 
    private static final String KEY_COMPANYNAME="_companyName"; 
    private static final String KEY_COMPANYURL="_companyUrl"; 
    private static final String KEY_COMPANYEMAIL="_companyEmail"; 
    private static final String KEY_COMPANYNUMMBER="_companyNumber"; 
    private static final String KEY_COMPANYADDRESS="_companyAddress"; 

    public CompanyDatabaseHandler(Context context) { 
     super(context, DATABASE_NAME, null, DATABASE_VERSION); 
    } 


/* 
Creating new Table 
*/ 
    @Override 
    public void onCreate(SQLiteDatabase db) { 

     String CREATE_COMPANY_TABLE = "CREATE TABLE " 
       + TABLE_COMPANY + "("+ KEY_ID + " INTEGER PRIMARY KEY,"+ KEY_COMPANYNAME + " TEXT,"+ KEY_COMPANYURL + " TEXT,"+ KEY_COMPANYEMAIL + " TEXT"+ KEY_COMPANYNUMMBER+" TEXT"+ KEY_COMPANYADDRESS+" TEXT"+")"; 
     db.execSQL(CREATE_COMPANY_TABLE); 
    } 
/* 
Upgrading Table 
*/ 
    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     db.execSQL("DROP TABLE IF EXISTS " + TABLE_COMPANY); 

     // Create tables again 
     onCreate(db); 
    } 

    // Adding new company 
    public void addCompany(Company company) { 
     SQLiteDatabase db = CompanyDatabaseHandler.this.getWritableDatabase(); 

     ContentValues values = new ContentValues(); 
     values.put(KEY_COMPANYNAME, company.getCompanyName()); 
     values.put(KEY_COMPANYURL, company.getCompanyLink()); 
     values.put(KEY_COMPANYEMAIL, company.getCompanyEmail()); 
     values.put(KEY_COMPANYNUMMBER, company.getCompanyNumber()); 
     values.put(KEY_COMPANYADDRESS, company.getCompanyAddress()); 

     // Inserting Row 
     db.insert(TABLE_COMPANY, null, values); 
     // Closing database connection 
     db.close(); 
    } 

    // Getting single company 
    public Company getCompany(int id) {SQLiteDatabase db = this.getReadableDatabase(); 
     Cursor cursor = db.query(TABLE_COMPANY,           //Table 
         new String[] { KEY_COMPANYNAME,KEY_COMPANYURL,KEY_COMPANYEMAIL ,KEY_COMPANYNUMMBER,KEY_COMPANYADDRESS}, //Colunms 
         KEY_ID + "=?",  //Selection KEY 
         new String[] { String.valueOf(id) },//Selection Args 
         null,    //Group By 
         null,    //Having 
         null);    //Order By 


     if (cursor != null) 
      cursor.moveToFirst(); 

     Company company=new Company(Integer.parseInt(cursor.getString(0)),cursor.getString(1),cursor.getString(2),cursor.getString(3),cursor.getString(4),cursor.getString(5)); 
     // return company 
     return company; 
    } 

    // Getting All Company 
    public List<Company> getAllCompany() { 
     List<Company> companyList = new ArrayList<Company>(); 
     // Select All Query 
     String selectQuery = "SELECT * FROM " + TABLE_COMPANY; 

     SQLiteDatabase db = this.getWritableDatabase(); 
     Cursor cursor = db.rawQuery(selectQuery, null); 

     // looping through all rows and adding to list 
     if (cursor.moveToFirst()) { 
      do { 
       Company company = new Company(); 
       company.setCompanyId(Integer.parseInt(cursor.getString(0))); 
       company.setCompanyName(cursor.getString(1)); 
       company.setCompanyLink(cursor.getString(2)); 
       company.setCompanyEmail(cursor.getString(3)); 
       company.setCompanyNumber(cursor.getString(4)); 
       company.setCompanyAddress(cursor.getString(5)); 
       // Adding company to list 
       companyList.add(company); 
      } while (cursor.moveToNext()); 
     } 

     // return companyList 
     return companyList; 
    } 

    // Getting company Count 
    public int getCompanyCount() { 
     String countQuery = "SELECT * FROM " + TABLE_COMPANY; 
     SQLiteDatabase db = this.getReadableDatabase(); 
     Cursor cursor = db.rawQuery(countQuery, null); 
     int count=cursor.getCount(); 
     cursor.close(); 

     return count; 
//  return cursor.getCount(); 
    } 

    // Updating single Company 
    public int updateCompany(Company company) { 
     SQLiteDatabase db = this.getWritableDatabase(); 

     ContentValues values = new ContentValues(); 
     values.put(KEY_COMPANYNAME, company.getCompanyName()); 
     values.put(KEY_COMPANYURL, company.getCompanyLink()); 
     values.put(KEY_COMPANYEMAIL, company.getCompanyEmail()); 
     values.put(KEY_COMPANYNUMMBER, company.getCompanyNumber()); 
     values.put(KEY_COMPANYADDRESS, company.getCompanyAddress()); 
     // updating row 
     return db.update(TABLE_COMPANY, values, KEY_ID + " = ?", 
       new String[] { String.valueOf(company.getCompanyId()) }); 
    } 

    // Deleting single company 
    public void deleteCompany(Company company) { 
     SQLiteDatabase db = this.getWritableDatabase(); 
     db.delete(TABLE_COMPANY, KEY_ID + " = ?", 
       new String[] { String.valueOf(company.getCompanyId()) }); 
     db.close(); 
    } 
} 

하지만 난으로 점점 오전 테이블에 추가하는 동안 다음과

table detailsofcompany has no column named _companyAddress 
02-25 20:12:29.781 19919-19919/############ E/SQLiteDatabase: Error inserting _companyAddress=Address here [email protected] _companyNumber=_companyUrl=http://www.google.com _companyName=ABC COMPANY 
                          android.database.sqlite.SQLiteException: table detailsofcompany has no column named _companyAddress (code 1): , while compiling: INSERT INTO detailsofcompany(_companyAddress,_companyEmail,_companyNumber,_companyUrl,_companyName) VALUES (?,?,?,?,?) 

나는 안드로이드 SQLite는 구현에 새로운입니다. 나는 버전을 업데이트하고 컬럼 이름뿐만 아니라 데이터베이스의 이름을 변경하려고했지만 도움이되지 못했습니다.

나는 갇혔다. 당신의 제안은 도움이 될 것입니다. 나는 내가 어디로 잘못 가고 있는지 얻지 못하고있다.

답변

2

쉼표가 CREATE_COMPANY_TABLE 문자열에서 누락되었습니다. 두 개의 열에 대해서는 TEXT 후에 쉼표가 누락되었습니다. 변경 사항이 적용된 응용 프로그램을 실행하기 전에 기존 응용 프로그램을 제거하십시오.

@Override 
public void onCreate(SQLiteDatabase db) { 

    String CREATE_COMPANY_TABLE = "CREATE TABLE " 
      + TABLE_COMPANY + "("+ KEY_ID + " INTEGER PRIMARY KEY,"+ KEY_COMPANYNAME + " TEXT,"+ KEY_COMPANYURL + " TEXT,"+ KEY_COMPANYEMAIL + " TEXT,"+ KEY_COMPANYNUMMBER+" TEXT,"+ KEY_COMPANYADDRESS+" TEXT"+")"; 
    db.execSQL(CREATE_COMPANY_TABLE); 
} 
+0

Tysm :-). 먼저 확인 했어야했다. 나는 큰 실수를 찾고 있었고 이것을 남겼다. Tysm. –

관련 문제