2013-05-04 4 views
0

когда я perfom метода поиска его дала мне запустить ошибку временинет такой ошибки столбца в андроиде базы данных

error:- 05-04 14:04:00.227: E/AndroidRuntime(4559): Caused by: 
android.database.sqlite.SQLiteException: no such column: ww (code 1): , 
while compiling: SELECT DISTINCT faculty, deparment, name, officeNumber, 
phoneNumber, emailAddress, officeHour FROM teacherInfo WHERE name=ww 

мне нужно искать по имени учителя, когда пользователь вводит имя и отображать всю информацию об этом учителе, таких как имя , факультет, deparment, телефон, электронная почта, officenumber, officehour

thiss метод getRecord в DBAdapter.java

public Cursor getRecord(String n1) throws SQLException 
{  
    Cursor mCursor =db.query(true,tableName , new String[] {facultyc, 
       deparmentc, namec, officeNumberc,Phonec ,emailAddressc,officeHourc},namec + "=" + n1, null, null, null, null, null); 


    if (mCursor != null) { 
     mCursor.moveToFirst(); 
    } 
    return mCursor; 
} 

и этот метод поиска в Information.java

public void search(){ 
    db.open(); 
    Cursor c = db.getRecord(n); 
    if (c.moveToFirst()){ 
     t1.setText(c.getString(0)); 
     t2.setText(c.getString(1)); 
     t3.setText(c.getString(2)); 
     t4.setText(c.getString(3)); 
     t5.setText(c.getString(4)); 
     t6.setText(c.getString(5)); 
     t7.setText(c.getString(6)); 

    } 

    else 
     Toast.makeText(this, "this Dr not found", Toast.LENGTH_LONG).show(); 
    db.close(); 
} 

этот OnCreate метод в DBAdapter.java

public void onCreate(SQLiteDatabase db) 
DATABASE_CREATE = 
     "create table if not exists teacherInfo (teacherNumber INTEGER primary key autoincrement," 
     + "name TEXT not null, faculty TEXT,deparment TEXT,officeNumber INTEGER,officeHour TEXT, emailAddress TEXT,phoneNumber TEXT, location INTEGER);"; 
      { 
       try { 
        db.execSQL(DATABASE_CREATE);  
       } catch (SQLException e) { 
        e.printStackTrace(); 
       } 
      } 

ответ

0

Ваш запрос не продезинфицировать. Оно должно быть:

SELECT DISTINCT faculty, deparment, name, officeNumber, 
    phoneNumber, emailAddress, officeHour FROM teacherInfo WHERE name="ww" 
2
Cursor mCursor =db.query(true,tableName , new String[] {facultyc, 
      deparmentc, namec, officeNumberc,Phonec ,emailAddressc,officeHourc},namec + "= ?", new String[] { n1 }, null, null, null, null); 

Строки должны быть в кавычках.

2

Проблема в том, что вы пропустили кавычки строки!

Лучше использовать аргументы типа String так:

public Cursor getRecord(String n1) throws SQLException 
{  
    Cursor mCursor =db.query(true,tableName , new String[] {facultyc, 
       deparmentc,namec,officeNumberc,Phonec,emailAddressc,officeHourc}, 
       namec + "= ? ", 
       new String[] {ww}, null, null, null, null); 


    if (mCursor != null) { 
     mCursor.moveToFirst(); 
    } 
    return mCursor; 
} 

К таким образом избежать каких-либо ошибок, а также строка специальные символы автоматически сбежавших!

0

Вы вводите неверный запрос. Измените его на ->

Cursor mCursor =db.query(true,tableName , new String[] {facultyc, 
       deparmentc, namec, officeNumberc,Phonec ,emailAddressc,officeHourc},"name = " + n1, null, null, null, null, null); 
+0

Спасибо, что его работа сейчас – user2324084

+0

Вы можете отметить этот ответ как принято;) –

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