2017-07-03 338 views
1

嗨,大家好,我需要你的帮助。我在我的应用程序中创建SQLite数据库,并将数据插入到其中。现在我想从中检索数据,但我只想插入一个数据并检索它,然后将其显示到TextView中。android studio从Sqlite数据库检索数据并将其显示到textview

请帮助我这是我第一次使用SQLite数据库。

public class Db_sqlit extends SQLiteOpenHelper{ 

    String TABLE_NAME = "BallsTable"; 

    public final static String name = "db_data"; 

    public Db_sqlit(Context context) { 
     super(context, name, null, 1); 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 
     db.execSQL("create table "+TABLE_NAME+" (id INTEGER PRIMARY KEY AUTOINCREMENT, ball TEXT)"); 

    } 

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

    public boolean insertData(String balls){ 
     SQLiteDatabase db = this.getWritableDatabase(); 
     ContentValues contentValues = new ContentValues(); 

     contentValues.put("ball",balls); 

     long result = db.insert(TABLE_NAME,null,contentValues); 
     if(result == -1){ 
      return false; 
     } 
     else 
      return true; 
    } 

    public void list_balls(TextView textView) { 

     Cursor res = this.getReadableDatabase().rawQuery("select ball from "+TABLE_NAME+"",null); 
     textView.setText(""); 
     while (res.moveToNext()){ 
      textView.append(res.getString(1)); 
     } 
    } 
} 
+0

什么问题? –

+0

我没有问题,但我不知道如何从Sqlite数据库中检索数据,我想从Sqlite数据库检索一个数据并将其显示到Textview中可以帮助我吗? –

+0

好的,但你刚刚发布了'SQLiteOpenHelper'类,你从哪里调用'insertData'? –

回答

1

这是我如何实现这一目标的一个例子。

在这个例子中,我将storeretrieve一个学生的名字和年龄。

首先创建一个类,我打电话给我

DBManager.java

public class DBManager { 
private Context context; 
private SQLiteDatabase database; 
private SQLiteHelper dbHelper; 

public DBManager(Context c) { 
    this.context = c; 
} 

public DBManager open() throws SQLException { 
    this.dbHelper = new SQLiteHelper(this.context); 
    this.database = this.dbHelper.getWritableDatabase(); 
    return this; 
} 

public void close() { 
    this.dbHelper.close(); 
} 

public void insert(String name, String desc) { 
    ContentValues contentValue = new ContentValues(); 
    contentValue.put(SQLiteHelper.NAME, name); 
    contentValue.put(SQLiteHelper.AGE, desc); 
    this.database.insert(SQLiteHelper.TABLE_NAME_STUDENT, null, contentValue); 
} 


public Cursor fetch() { 
    Cursor cursor = this.database.query(SQLiteHelper.TABLE_NAME_STUDENT, new String[]{SQLiteHelper._ID, SQLiteHelper.NAME, SQLiteHelper.AGE}, null, null, null, null, null); 
    if (cursor != null) { 
     cursor.moveToFirst(); 
    } 
    return cursor; 
} 

public int update(long _id, String name, String desc) { 
    ContentValues contentValues = new ContentValues(); 
    contentValues.put(SQLiteHelper.NAME, name); 
    contentValues.put(SQLiteHelper.AGE, desc); 
    return this.database.update(SQLiteHelper.TABLE_NAME_STUDENT, contentValues, "_id = " + _id, null); 
} 

public void delete(long _id) { 
    this.database.delete(SQLiteHelper.TABLE_NAME_STUDENT, "_id=" + _id, null); 
    } 
} 

然后创建一个SQLiteOpenHelper我打电话给我

SQLiteHelper.java

public class SQLiteHelper extends SQLiteOpenHelper { 
public static final String AGE = "age"; 
private static final String CREATE_TABLE_STUDENT = " create table STUDENTS (_id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL , age TEXT);"; 
private static final String DB_NAME = "STUDENTS.DB"; 
private static final int DB_VERSION = 1; 
public static final String NAME = "name"; 
public static final String TABLE_NAME_STUDENT = "STUDENTS"; 
public static final String _ID = "_id"; 

public SQLiteHelper(Context context) { 
    super(context, DB_NAME, null, 1); 
} 

public void onCreate(SQLiteDatabase db) { 
    Log.e("SQLITE", "table reated"); 
    db.execSQL(CREATE_TABLE_STUDENT); 
} 

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    db.execSQL("DROP TABLE IF EXISTS STUDENTS"); 
    onCreate(db); 
} 

} 

要添加一个新的学生,你会打电话:

在这个例子中我把文本从EditText,并单击按钮时我检查EditText为空。

btnAdd.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View view) { 
      if (edtName.getText().toString().trim().length() == 0) { 
       Toast.makeText(getApplicationContext(), "Please provide your students name", Toast.LENGTH_SHORT).show(); 

      } else 
       try { 
        if (edtAge.getText().toString().trim().length() != 0) { 

         String name = edtName.getText().toString().trim(); 
         String age = edtAge.getText().toString().trim(); 
         String query = "Select * From STUDENTS where name = '"+name+"'"; 
         if(dbManager.fetch().getCount()>0){ 
          Toast.makeText(getApplicationContext(), "Already Exist!", Toast.LENGTH_SHORT).show(); 
         }else{ 
          dbManager.insert(name, age); 

          Toast.makeText(getApplicationContext(), "Added successfully!", Toast.LENGTH_SHORT).show(); 

         } 

        } else { 

         Toast.makeText(getApplicationContext(), "please provide student age!", Toast.LENGTH_SHORT).show(); 


        } 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 


     } 
    }); 

更新: 在这里,我把文本中EditText,并单击按钮时更新学生。

btnupdate.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View view) { 
      String name = nameText.getText().toString(); 
      String age = ageText.getText().toString(); 

      dbManager.update(_id, name, age); 
      Toast.makeText(getApplicationContext(), "Updated successfully!", Toast.LENGTH_SHORT).show(); 


     } 
    }); 

要删除您可以拨打此:

dbManager.delete(_id); 
      Toast.makeText(getApplicationContext(), "Deleted successfully!", Toast.LENGTH_SHORT).show(); 

,并获取数据从sqlite的时候,你可以这样做:

在这里,我得到了学生的姓名并将其显示在TextView

DBManager dbManager = new DBManager(getActivity()); 
    dbManager.open(); 

    Cursor cursor = dbManager.fetch(); 
    cursor.moveToFirst(); 
    final TextView studentName = (TextView) getActivity().findViewById(R.id.nameOfStudent); 
    studentName.settext(cursor.getString(0)); 
+0

非常感谢你的努力,但我不想从textview中获取数据并将其插入到数据中。我想从db_sqlit中检索数据,当我检索到它时,我将它设置为textview –

+0

,这样数据就已经插入数据库了? –

+0

是的,我想检索它,但我只插入一个字符串,我想检索它不检索所有数据,当我检索它,我想将其设置为文本视图 –

相关问题