【发布时间】:2015-08-01 09:46:38
【问题描述】:
我是编码新手。我尝试使用 SQLite 添加新列,但它不显示 link 列输出,只显示 TextView 中的名称。
谁能告诉我我的代码有什么问题,因为它不会显示link 列?
历史片段
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.TextView;
import android.database.Cursor;
public class HistoryFragment extends Fragment {
EditText name;
EditText link;
TextView sqlDisplay;
MyDBHandler dbHandler;
public HistoryFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_history, container, false);
link = (EditText) rootView.findViewById(R.id.link);
name = (EditText) rootView.findViewById(R.id.name);
sqlDisplay = (TextView) rootView.findViewById(R.id.sqlDisplay);
dbHandler = new MyDBHandler(this.getActivity(),null , null, null, 1);
printDatabase();
return rootView;
}
@Override
public void onViewCreated(View rootView, Bundle savedInstanceState) {
rootView.findViewById(R.id.saveButton).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
saveOnClicked(v);
}
});
rootView.findViewById(R.id.deleteButton).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
deleteOnClicked(v);
}
});
}
//Add a product to the database
public void saveOnClicked(View view) {
favourites favourites = new favourites(name.getText().toString(),link.getText().toString());
dbHandler.addFavourites(favourites);
printDatabase();
}
//Delete items
public void deleteOnClicked(View view) {
String inputTextName = name.getText().toString();
String inputTextLink = link.getText().toString();
dbHandler.deleteFavourites(inputTextName,inputTextLink );
printDatabase();
}
//Print the database
public void printDatabase() {
String dbString = dbHandler.databaseToString();
sqlDisplay.setText(dbString);
name.setText("") ; link.setText("");
}
}
Favorites.java
public class favourites {
private int _id;
private String _videoname;
private String _link;
public favourites(){
}
public favourites (String videoname,String link){
this._videoname = videoname;
this._link = link;
}
public void set_id(int _id) {
this._id = _id;
}
public void set_videoname(String _videoname) {
this._videoname = _videoname;
}
public String get_videoname() {
return _videoname;
}
public int get_id() {
return _id;
}
public String get_link() {
return _link;
}
public void set_link(String _link) {
this._link = _link;
}
}
MyDBHandler
import android.app.Activity;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class MyDBHandler extends SQLiteOpenHelper {
public static final int DATABASE_VERSION = 3;
public static final String DATABASE_NAME = "favourites.db";
public static final String TABLE_FAVOURITES = "favourites";
public static final String COLUMN_ID = "_id";
public static final String COLUMN_VIDEONAME = "videoname";
public static final String COLUMN_LINK = "link";
public MyDBHandler(Context context, String name, String link, SQLiteDatabase.CursorFactory factory, int version) {
super(context, DATABASE_NAME, factory, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String query = "CREATE TABLE " + TABLE_FAVOURITES + "(" +
COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
COLUMN_VIDEONAME + " TEXT, " + COLUMN_LINK + " TEXT " +
");";
db.execSQL(query);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_FAVOURITES);
onCreate(db);
}
public void addFavourites(favourites favourites) {
ContentValues values = new ContentValues();
values.put(COLUMN_VIDEONAME, favourites.get_videoname());
values.put(COLUMN_LINK, favourites.get_link());
SQLiteDatabase db = getWritableDatabase();
db.insert(TABLE_FAVOURITES, null,values);
db.close();
}
public void deleteFavourites(String videoName, String link) {
SQLiteDatabase db = getWritableDatabase();
db.execSQL("DELETE FROM " + TABLE_FAVOURITES + " WHERE " + COLUMN_VIDEONAME + "=\"" + videoName + "\" "
+ COLUMN_LINK + "=\"" + link + "\" ;"
);
}
public String databaseToString() {
String dbString = "";
SQLiteDatabase db = getWritableDatabase();
String query = "SELECT * FROM " + TABLE_FAVOURITES + " WHERE 1";
//Cursor points to a location in your results
Cursor c = db.rawQuery(query, null);
//Move to the first row in your results
c.moveToFirst();
//Position after the last row means the end of the results
while (!c.isAfterLast()) {
if (c.getString(c.getColumnIndex("videoname")) != null) {
dbString += c.getString(c.getColumnIndex("videoname"));
dbString += "\n";
}
c.moveToNext();
}
db.close();
return dbString;
}
}
【问题讨论】:
标签: android sqlite android-fragments