简体   繁体   English

如何从sqlite检索数据以在textview上显示

[英]How to retrieve data from sqlite to show on textview

I searched a lot I found issue that relate with my problem, but i fixed already, it still error I don't know why please help me to fix it. 我进行了很多搜索,发现与我的问题有关的问题,但是我已经解决了,但是仍然出错,我不知道为什么请帮助我解决它。

I want to retrive data from getNotname method to show in textview but it errors I don't know why, I just copy getAllContacts method in DatabaseHandler class and I adjusted a little bit query in getNotename. 我想从getNotname方法检索数据以在textview中显示,但是它出错,我不知道为什么,我只是在DatabaseHandler类中复制getAllContacts方法,然后在getNotename中调整了一点查询。

In getAllContacts String selectQuery = "SELECT * FROM " + TABLE_SONG_DETAIL; 在getAllContacts字符串中,selectQuery =“ SELECT * FROM” + TABLE_SONG_DETAIL;

In getNotename String selectQuery = "SELECT "+ KEY_N_NAME +" FROM " + TABLE_SONG_DETAIL+ " WHERE KEY_ID = '2';"; 在getNotename字符串中,selectQuery =“ SELECT” + KEY_N_NAME +“ FROM” + TABLE_SONG_DETAIL +“ WHERE KEY_ID ='2';”;

but in mainactivity when I call getNotename, it errors, it didn't show anything. 但是在mainactivity中,当我调用getNotename时,它出错了,没有显示任何内容。 On the other hand when I call getAllContacts instead of getNotename , It's okay data will show on textview. 另一方面,当我调用getAllContacts而不是getNotename时,可以的数据将显示在textview上。 I just want to know why when I adapt a little bit query in getNotename then it errors. 我只想知道为什么当我修改getNotename中的一点查询时会出错。

               **List<Contact> contacts = db.getNotename();**  // When I call getNotename method, It errors but when I change to call to getAllContacts, It can show data on textview.

This is my code 这是我的代码

DatabaseHandler class DatabaseHandler类

public class DatabaseHandler extends SQLiteOpenHelper {



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

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

    // Contacts table name
    private static final String TABLE_SONG_DETAIL = "songDetail";

    // Contacts Table Columns names
    private static final String KEY_ID = "id";
    private static final String KEY_S_NAME = "songname";
    private static final String KEY_N_NAME = "notename";
    private static final String KEY_TIME = "time";


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

    // Creating Tables
    @Override
    public void onCreate(SQLiteDatabase db) {
        String CREATE_CONTACTS_TABLE = "CREATE TABLE " + TABLE_SONG_DETAIL + "("
                + KEY_ID + " INTEGER PRIMARY KEY," + KEY_S_NAME + " TEXT," + KEY_N_NAME + " TEXT,"
                + KEY_TIME + " TEXT" + ")";
        db.execSQL(CREATE_CONTACTS_TABLE);
    }

    // Upgrading database
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // Drop older table if existed
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_SONG_DETAIL);

        // Create tables again
        onCreate(db);
    }



    // Adding new data
    void addContact(Contact contact) {
        SQLiteDatabase db = this.getWritableDatabase();

        ContentValues values = new ContentValues(); //import android.content.ContentValues
        values.put(KEY_S_NAME, contact.getsongName()); // Song Name
        values.put(KEY_N_NAME, contact.getNotename()); //  Note name
        values.put(KEY_TIME, contact.getTime()); // Time


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



    // Getting All Data in Table
    **public List<Contact> getAllContacts() {**
        List<Contact> contactList = new ArrayList<Contact>();
        // Select All Query
        String selectQuery = "SELECT  * FROM " + TABLE_SONG_DETAIL;

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

        // looping through all rows and adding to list
        if (cursor.moveToFirst()) {
            do {
                Contact contact = new Contact();
                contact.setID(Integer.parseInt(cursor.getString(0)));
                contact.setsongName(cursor.getString(1));
                contact.setNotename(cursor.getString(2));
                contact.setTime(cursor.getString(3));
                // Adding contact to list
                contactList.add(contact);
            } while (cursor.moveToNext());
        }

        // return contact list
        return contactList;
    }



    // Getting  Notename
    **public List<Contact> getNotename() {**
        List<Contact> contactList = new ArrayList<Contact>();  
        // Select  Query

        String selectQuery = "SELECT  "+ KEY_N_NAME +" FROM " + TABLE_SONG_DETAIL+ "  WHERE KEY_ID = '2';";


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

        // looping through all rows and adding to list
        if (cursor.moveToFirst()) {
            do {
                Contact contact = new Contact();

                contact.setID(Integer.parseInt(cursor.getString(0)));
                contact.setsongName(cursor.getString(1));
                contact.setNotename(cursor.getString(2));
                contact.setTime(cursor.getString(3));

                // Adding contact to list
                contactList.add(contact);
            } while (cursor.moveToNext());
        }

        // return contact list
        return contactList;
    }
    }

MainActivity class MainActivity类

public class MainActivity extends Activity {

    SQLiteDatabase mDb;
    Cursor mCursor;


    @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            TextView note = (TextView)findViewById(R.id.textView1);
            DatabaseHandler db = new DatabaseHandler(this);


            // Inserting Data
            Log.d("Insert: ", "Inserting .."); 


            db.addContact(new Contact("Twinkle", "Do", "0.1"));   
            db.addContact(new Contact("Twinkle", "Do", "0.2"));    
            db.addContact(new Contact("Twinkle", "Sol", "0.3"));    
            db.addContact(new Contact("Twinkle", "Sol", "0.4"));    
            db.addContact(new Contact("Twinkle", "La", "0.5")); 



            // Reading all contacts
            Log.d("Reading: ", "Reading all contacts.."); 


            **List<Contact> contacts = db.getNotename();** 

                    StringBuilder builder = new StringBuilder();
                for (Contact cn : contacts) {
                    builder.append(cn.getNotename());


                    // Writing Contacts to log
                    String log = "Id: "+cn.getID()+" ,SongName: " + cn.getsongName() + " ,NoteName: " + cn.getNotename()+ " ,Time: " + cn.getTime();
                    Log.d("Name: ", log);
                }

                // print show on textview
                note.setText(builder.toString());


        }


        }

Contact class 接触类

package com.example.databasehandler.java;

public class Contact {



        //private variables
        int _id;
        String _songname;
        String _note_name;
        String _time;

        // Empty constructor
        public Contact(){

        }
        // constructor
        public Contact(int id, String songname, String notename, String time){
            this._id = id;
            this._songname = songname;
            this._note_name = notename;
            this._time = time;

        }

        // constructor
        public Contact(String songname, String notename, String time){
            this._songname = songname;
            this._note_name = notename;
            this._time = time;

        }
        // getting ID
        public int getID(){
            return this._id;
        }

        // setting id
        public void setID(int id){
            this._id = id;
        }

        // getting name
        public String getsongName(){
            return this._songname;
        }

        // setting name
        public void setsongName(String songname){
            this._songname = songname;
        }

        // getting phone number
        public String getNotename(){
            return this._note_name;
        }

        // setting phone number
        public void setNotename(String notename){
            this._note_name = notename;
        }

     // getting phone number
        public String getTime(){
            return this._time;
        }

        // setting phone number
        public void setTime(String time){
            this._time = time;
        }
    }

I think your problem is that you have added a semi colon to the end of your SQL select statement. 我认为您的问题是您在SQL select语句的末尾添加了分号。

As stated here: http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#rawQuery(java.lang.String , java.lang.String[], android.os.CancellationSignal) 如此处所述: http : //developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#rawQuery (java.lang.String,java.lang.String [],android.os.CancellationSignal)

The SQL string must not be ";" SQL字符串不能为“;” terminated. 终止。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM