2015-10-23 2 views
-2

Я не могу получить данные из базы данных.
Вы можете мне помочь?Я не могу получить данные

Журнал ошибок:

1-10091/com.example.dogruprint.dogruprint2 Х/AndroidRuntime: неустранимая: Основная android.database.sqlite.SQLiteException: нет такой таблицы: пользователи (код 1):, при компиляции: SELECT _id, u_name, u_pass ОТ пользователей на android.database.sqlite.SQLiteConnection.nativePrepareStatement (Native

Метод) в android.database.sqlite.SQLiteConnection.a cquirePreparedStatement (SQLiteConnection.java:882) на android.database.sqlite.SQLiteConnection.prepare (SQLiteConnection.java:493) на android.database.sqlite.SQLiteSession.prepare (SQLiteSession.java:588) на android.database. sqlite.SQLiteProgram. (SQLiteProgram.java:58) на android.database.sqlite.SQLiteQuery. (SQLiteQuery.java:37) в android.database.sqlite.SQLiteDirectCursorDriver.query (SQLiteDirectCursorDriver.java:44) на андроид. database.sqlite.SQLiteDatabase.rawQueryWithFactory (SQLiteDatabase.java:1314) в android.database.sqlite.SQLiteDatabase.queryWithFactory (SQLiteDatabase.java:1161) в android.database.sqlite.SQLiteDatabase.query (SQLiteDatabase.java:1032) на android.database.sqlite.SQLiteDatabase.query (SQLiteDatabase.java:1200) на com.example.dogruprint.dogruprint2.Database.getThat (Database.java:123) на com.example.dogruprint.dogruprint2.siparisekle $ 2. onClick (siparisekle.java:113) на android.view.View.performClick (View.java:4084) на android.view.View $ PerformClick.run (View.java:16966) на android.os.Handler. handleCallback (Handler.java:615) на android.os.Handler.dispatchMessage (Handler.java:92) на android.os.Looper.loop (Looper.java:137) на android.app.ActivityThread.main (ActivityThread.java:4745) по адресу java.lang.reflect.Method.invokeNative (собственный метод) по адресу java.lang.reflect.Met hod.invoke (Method.java:511) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:786) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java: 553) на dalvik.system.NativeStart.main (Родной метод)

DATABASE.java

package com.example.dogruprint.dogruprint2; 

import android.app.Dialog; 
import android.content.ContentValues; 
import android.content.Context; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteOpenHelper; 
import android.widget.Toast; 

import java.sql.SQLException; 


public class Database { 


    public static final String KEY_ROWID = "_id"; 
    public static final String KEY_NAME = "u_name"; 
    public static final String KEY_PASS = "u_pass"; 

    private static final String DB_NAME = "app"; 
    private static final String DB_TABLE = "users"; 
    private static final int version = 1; 


    private SQLiteDatabase ourDatabase; 
    private DBHelper ourHelper; 
    private Context ourContext; 
    private SQLiteDatabase writableDatabase; 


    public Database(Context context) { 

     ourContext = context; 

    } 

    public SQLiteDatabase getWritableDatabase() { 
     return writableDatabase; 
    } 




    public class DBHelper extends SQLiteOpenHelper { 


     public DBHelper(Context context) 

     { 
      super(context, DB_NAME, null, version); 
     } 


     @Override 
     public void onCreate(SQLiteDatabase db) { 


/* 

      final String CREATE_TABLE = " CREATE TABLE " + DB_TABLE + " (" + KEY_ROWID + " INTEGER PRIMARY KEY AUTOINCREMENT , " 
        + KEY_NAME + " VARCHAR(255) , " 
        + KEY_PASS + " VARCHAR(255) ," 
        ; 

*/ 


      String CREATE_USERS_TABLE = "CREATE TABLE " + DB_TABLE + "(" + KEY_ROWID + 
        " INTEGER PRIMARY KEY," + KEY_NAME + " TEXT," + KEY_PASS + " TEXT" 
        + ");"; 



     } 

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


     } 


    } 

    public Database open() throws SQLException { 


     ourHelper = new DBHelper(ourContext); 

     ourDatabase = ourHelper.getWritableDatabase(); 

     return this; 


    } 

    public Database close() { 

     ourHelper.close(); 
     return this; 


    } 

    public void addThat(String name, String pass) { 


     ContentValues cv = new ContentValues(); 

     cv.put(KEY_NAME, name); 
     cv.put(KEY_PASS, pass); 
     ourDatabase.insert(DB_TABLE, null, cv); 


    } 

    public String getThat() 
    { 
     String[] colomns = new String[]{KEY_ROWID,KEY_NAME,KEY_PASS}; 

     Cursor c = ourDatabase.query(DB_TABLE,colomns,null,null,null,null,null); 
     int İROW = c.getColumnIndex(KEY_ROWID); 
     int İNAME= c.getColumnIndex(KEY_NAME); 
     int İPASS = c.getColumnIndex(KEY_PASS); 

     String result = ""; 

     for(c.moveToFirst();!c.isAfterLast();c.moveToNext()) 
     { 
      result = result + "name" + c.getString(İNAME) + "pass" + c.getString(İPASS)+"\n"; 


     } 



     return result; 
    } 
} 

siparisekle.java

package com.example.dogruprint.dogruprint2; 

import android.app.ActionBar; 
import android.app.Activity; 
import android.app.Dialog; 
import android.content.ContentValues; 
import android.content.Intent; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteOpenHelper; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.text.TextUtils; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.AutoCompleteTextView; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.ListView; 
import android.widget.TextView; 
import android.widget.Toast; 

import java.io.IOException; 
import java.sql.SQLException; 

import static android.R.*; 


public class siparisekle extends Activity { 



    private AutoCompleteTextView act1, act2, act3; 

    private EditText edittxt1; 

    EditText etName,etPass; 
    TextView tvResult; 
    Button bSave; 
    Button bShow; 





    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_siparisekle); 

     final Database db = new Database(this); 




     install_elements(); 





     bSave.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 

       boolean ok = true; 
       String name = etName.getText().toString(); 
       String pass = etPass.getText().toString(); 

       try { 
        db.open(); 
        db.addThat(name, pass); 
        tvResult.setText(name + "Eklendi"); 
        db.close(); 

       } catch (Exception e) { 
        ok = false; 
        e.printStackTrace(); 
        tvResult.setText("Sorun var"); 


       } finally { 

        if (ok) { 
         Dialog d = new Dialog(siparisekle.this); 
         TextView tv = new TextView(siparisekle.this); 
         tv.setText("BASARILI"); 
         d.setTitle("Sonuç"); 
         d.setContentView(tv); 
         d.show(); 


        } 

       } 


      } 
     }); 

     bShow.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) 


      { 
       try { 
        db.open(); 
        String data = db.getThat(); 
        tvResult.setText(data); 
        db.close(); 


       } catch (SQLException e) 
       { 

        Toast.makeText(getApplicationContext(),"Çağırmada Bir Sorun Oluştu",Toast.LENGTH_LONG).show(); 
        e.printStackTrace(); 
       } 


      } 
     }); 






} 
protected void install_elements() 
{ 

    etName = (EditText) findViewById(R.id.etName); 
    etPass= (EditText) findViewById(R.id.etPass); 
    tvResult= (TextView) findViewById(R.id.tvResult); 
    bSave= (Button) findViewById(R.id.bSave); 
    bShow= (Button) findViewById(R.id.bShow); 

} 



} 

ответ

2

Сообщение об исключении говорит, что это:

нет такой таблицы: пользователи (код 1) во время компиляции "SELECT _id, u_name, u_pass от пользователей"

Он ищет таблицу, называемую «пользователями» в базе данных, но она не может ее найти!

Либо вы не настроили свою базу данных правильно (например, вы не создали таблицы), либо схема (например, имена таблиц) для вашей базы данных не соответствует требованиям приложения.


Фактически, посмотрите на свой метод onCreate. Все, что он делает, это создание и отбрасывание строки, содержащей некоторый SQL. Вы должны выполнить его ....

0

Вам действительно нужно, чтобы выполнить свое создание таблицы:

String CREATE_USERS_TABLE = "CREATE TABLE " + DB_TABLE + "(" + KEY_ROWID + 
    " INTEGER PRIMARY KEY," + KEY_NAME + " TEXT," + KEY_PASS + " TEXT" + ")"; 

db.execSQL(CREATE_USERS_TABLE); 

Вы также должны вызвать ваш метод onCreate() внутри метода onUpgrade()

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

    onCreate(db); 
} 
+0

Я попробовал то, что вы сказали, но не смогли получить результат – cyberscorpion

+0

Вам необходимо удалить и переустановить приложение. –

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