Sqlite 在单击项目时覆盖我的字符串,我无法从数据库中删除
当我按下“Lägg till(Add)”时,我将文本放入我的三个编辑文本框中,然后按下OK,它将保存在数据库中,并在我的listview中显示第一个编辑框文本。当我按下listview中的某个项目时,我希望能够显示输入的文本,如果我按下“RADERA(删除)”,我希望能够将其从数据库和listview中删除 我的数据库适配器Sqlite 在单击项目时覆盖我的字符串,我无法从数据库中删除,sqlite,Sqlite,当我按下“Lägg till(Add)”时,我将文本放入我的三个编辑文本框中,然后按下OK,它将保存在数据库中,并在我的listview中显示第一个编辑框文本。当我按下listview中的某个项目时,我希望能够显示输入的文本,如果我按下“RADERA(删除)”,我希望能够将其从数据库和listview中删除 我的数据库适配器 package com.projekt; import android.content.ContentValues; import android.content.Co
package com.projekt;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
public class DBAdapter {
static final String KEY_ROWID = "id";
static final String KEY_PASS = "pass";
static final String KEY_USERNAME = "user";
static final String KEY_TITLE = "title";
static final String TAG = "DBAdapter";
static final String DATABASE_NAME = "DBPASS";
static final String DATABASE_TABLE = "information";
static final int DATABASE_VERSION = 1;
static final String DATABASE_CREATE = "create table information (id integer primary key autoincrement, "
+ "user text not null, pass text not null, title text not null);";
final Context context;
DatabaseHelper DBHelper;
SQLiteDatabase db;
public DBAdapter(Context ctx) {
this.context = ctx;
DBHelper = new DatabaseHelper(context);
}
private static class DatabaseHelper extends SQLiteOpenHelper {
DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
try {
db.execSQL(DATABASE_CREATE);
} catch (SQLException e) {
e.printStackTrace();
}
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.w(TAG, "Upgrading database from version " + oldVersion + " to "
+ newVersion + ", which will destroy all old data");
db.execSQL("DROP TABLE IF EXISTS contacts");
onCreate(db);
}
}
// ---opens the database---
public DBAdapter open() throws SQLException {
db = DBHelper.getWritableDatabase();
return this;
}
public void close() {
DBHelper.close();
}
public long insertInfo(String title, String user, String pass) {
ContentValues initialValues = new ContentValues();
initialValues.put(KEY_TITLE, title);
initialValues.put(KEY_USERNAME, user);
initialValues.put(KEY_PASS, pass);
return db.insert(DATABASE_TABLE, null, initialValues);
}
public boolean deleteInfo(long rowId) {
return db.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowId, null) > 0;
}
public void delete_byID(int id){
db.delete(DATABASE_TABLE, KEY_ROWID+"="+id, null);
}
public Cursor getAllInfo() {
return db.query(DATABASE_TABLE, new String[] { KEY_ROWID, KEY_USERNAME,
KEY_PASS, KEY_TITLE }, null, null, null, null, null);
}
public Cursor getInfo(String title) throws SQLException {
Cursor mCursor = db.query(true, DATABASE_TABLE, new String[] {
KEY_ROWID, KEY_USERNAME, KEY_PASS, KEY_TITLE }, KEY_PASS + "= '" + title + "'",
null, null, null, null, null);
if (mCursor != null) {
mCursor.moveToFirst();
}
return mCursor;
}
public boolean updateInfo(long rowId, String title, String user, String pass) {
ContentValues args = new ContentValues();
args.put(KEY_TITLE, title);
args.put(KEY_USERNAME, user);
args.put(KEY_PASS, pass);
return db.update(DATABASE_TABLE, args, KEY_ROWID + "=" + rowId, null) > 0;
}
}
my program
package com.projekt;
import java.util.ArrayList;
//import java.util.Arrays;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
//import android.text.Editable;
import android.view.View.OnClickListener;
import android.view.View;
import android.widget.*;
import android.widget.AdapterView.OnItemClickListener;
public class layout2 extends Activity implements OnClickListener, OnItemClickListener {
Button btn3;
ListView lv;
private ArrayAdapter<String> listAdapter;
String titleInfo;
ArrayList<String> nameList;
EditText anvNamn;
EditText pass;
EditText title;
DBAdapter db = new DBAdapter(this);
String passInfo = "";
String anv = "";
String titleInfo2 = "";
String visa;
int del;
Cursor c;
Button btn5;
public void onCreate(Bundle savedInstanceState) {
//Start
super.onCreate(savedInstanceState);
setContentView(R.layout.program_layout);
btn3 = (Button) findViewById(R.id.button3);
btn3.setOnClickListener(this);
btn5 = (Button) findViewById(R.id.button5);
btn5.setOnClickListener(this);
lv = (ListView) findViewById(R.id.listView1);
nameList = new ArrayList<String>();
listAdapter = new ArrayAdapter<String>(this, R.layout.row, nameList);
lv.setAdapter(listAdapter);
lv.setOnItemClickListener(this);
getAllData();
//Stop
}
private ArrayList<String> getAllData() {
// ---get all contacts---
db.open();
c = db.getAllInfo();
if (c.moveToFirst()) {
do {
anv = c.getString(1);
passInfo = c.getString(2);
titleInfo2 = c.getString(3);
//in = new String (anv, passInfo, titleInfo2);
//nameList.add(in);
listAdapter.add(titleInfo2);
//updateList();
} while (c.moveToNext());
//listAdapter.add(titleInfo2);
//del = c.getInt(c.getColumnIndex(db.KEY_ROWID));
}
db.close();
//listAdapter.add(titleInfo2);
return nameList;
}
public void inputDialog() {
AlertDialog.Builder alert = new AlertDialog.Builder(this);
LinearLayout lila1 = new LinearLayout(this);
lila1.setOrientation(1);
anvNamn = new EditText(this);
pass = new EditText(this);
title = new EditText(this);
lila1.addView(title);
lila1.addView(anvNamn);
lila1.addView(pass);
title.setText("Titel");
anvNamn.setText("Användarnamn");
pass.setText("Lösenord");
alert.setView(lila1);
title.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
title.setText("");
}
});
anvNamn.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
anvNamn.setText("");
}
});
pass.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
pass.setText("");
}
});
alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
String titleDB = title.getText().toString();
String userDB = anvNamn.getText().toString();
String passDB = pass.getText().toString();
listAdapter.add(titleDB);
db.open();
db.insertInfo(titleDB, userDB, passDB);
db.close();
}
});
alert.setNegativeButton("Cancel",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
dialog.cancel();
}
});
alert.show();
}
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.button3:
inputDialog();
break;
case R.id.button5:
Intent nextActivity = new Intent(this, MainActivity.class);
startActivity(nextActivity);
}
}
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, final int arg2, long arg3) {
// TODO Auto-generated method stub
String text = nameList.get(arg2);
//final int ar = arg2;
Toast.makeText(this, text, Toast.LENGTH_SHORT).show();
AlertDialog.Builder alert = new AlertDialog.Builder(this);
alert.setTitle(titleInfo2);
alert.setMessage("Användarnamn: " + anv + "\nLösenord: "+ passInfo);
final String radera = listAdapter.getItem(arg2).toString();
final long raderaPos = listAdapter.getItemId(arg2);
alert.setNegativeButton("RADERA",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
//String s = (String) arg0.getItemAtPosition(arg2);
db.open();
//db.updateInfo(arg2, anv, passInfo, titleInfo);
db.deleteInfo(arg2);
db.updateInfo(arg2, anv, passInfo, titleInfo);
db.close();
listAdapter.remove(radera);
}
});
alert.show();
}
}
im from sweden my string names may be confusing.
package com.projekt;
导入android.content.ContentValues;
导入android.content.Context;
导入android.database.Cursor;
导入android.database.SQLException;
导入android.database.sqlite.SQLiteDatabase;
导入android.database.sqlite.SQLiteOpenHelper;
导入android.util.Log;
公共类DBAdapter{
静态最终字符串键\u ROWID=“id”;
静态最终字符串键\u PASS=“PASS”;
静态最终字符串键\u USERNAME=“user”;
静态最终字符串键\u TITLE=“TITLE”;
静态最终字符串标记=“DBAdapter”;
静态最终字符串数据库\u NAME=“DBPASS”;
静态最终字符串数据库\u TABLE=“information”;
静态最终int数据库_版本=1;
静态最终字符串数据库\u CREATE=“创建表信息(id整型主键自动递增,”
+“用户文本不为空,传递文本不为空,标题文本不为空);”;
最终语境;
数据库助手DBHelper;
sqlitedb数据库;
公共DBAdapter(上下文ctx){
this.context=ctx;
DBHelper=新数据库助手(上下文);
}
私有静态类DatabaseHelper扩展了SQLiteOpenHelper{
DatabaseHelper(上下文){
super(上下文、数据库名称、null、数据库版本);
}
@凌驾
public void onCreate(SQLiteDatabase db){
试一试{
execSQL(创建数据库);
}捕获(SQLE异常){
e、 printStackTrace();
}
}
@凌驾
public void onUpgrade(SQLiteDatabase db,int-oldVersion,int-newVersion){
Log.w(标记,“将数据库从版本“+oldVersion+”升级到”
+新版本+”,将销毁所有旧数据);
db.execSQL(“如果存在联系人,则删除表”);
onCreate(db);
}
}
//---打开数据库---
公共DBAdapter open()引发SQLException{
db=DBHelper.getWritableDatabase();
归还这个;
}
公众假期结束(){
DBHelper.close();
}
公共长插入信息(字符串标题、字符串用户、字符串传递){
ContentValues initialValues=新的ContentValues();
initialValues.put(KEY_TITLE,TITLE);
initialValues.put(键\用户名,用户);
initialValues.put(键通过,通过);
返回db.insert(数据库表,null,初始值);
}
公共布尔deleteInfo(长rowId){
返回db.delete(DATABASE_TABLE,KEY_ROWID+“=”+ROWID,null)>0;
}
公共void delete_byID(int id){
db.delete(数据库表,键ROWID+“=”+id,null);
}
公共游标getAllInfo(){
返回db.query(DATABASE_TABLE,新字符串[]{KEY_ROWID,KEY_USERNAME,
KEY_PASS,KEY_TITLE},null,null,null,null,null,null);
}
公共游标getInfo(字符串标题)引发SQLException{
游标mCursor=db.query(true,数据库_表,新字符串[]){
KEY\u ROWID,KEY\u USERNAME,KEY\u PASS,KEY\u TITLE},KEY\u PASS+“=”+“,“+TITLE+”,
空,空,空,空,空,空);
if(mCursor!=null){
mCursor.moveToFirst();
}
返回mCursor;
}
公共布尔更新信息(长行ID、字符串标题、字符串用户、字符串传递){
ContentValues args=新的ContentValues();
参数put(键标题,标题);
参数put(键\用户名,用户);
参数put(按键通过,通过);
返回db.update(DATABASE_TABLE,args,KEY_ROWID+“=”+ROWID,null)>0;
}
}
我的节目
包com.projekt;
导入java.util.ArrayList;
//导入java.util.array;
导入android.app.Activity;
导入android.app.AlertDialog;
导入android.content.DialogInterface;
导入android.content.Intent;
导入android.database.Cursor;
导入android.os.Bundle;
//导入android.text.Editable;
导入android.view.view.OnClickListener;
导入android.view.view;
导入android.widget.*;
导入android.widget.AdapterView.OnItemClickListener;
公共类layout2扩展活动实现OnClickListener、OnItemClickListener{
按钮btn3;
ListView lv;
专用阵列适配器列表适配器;
字符串标题信息;
ArrayList名称列表;
编辑文本anvNamn;
编辑文本通行证;
编辑文本标题;
DBAdapter db=新的DBAdapter(此);
字符串passInfo=“”;
字符串anv=“”;
字符串titleInfo=“”;
字符串签证;
int del;
光标c;
按钮btn5;
创建时的公共void(Bundle savedInstanceState){
//开始
super.onCreate(savedInstanceState);
setContentView(R.layout.program_layout);
btn3=(按钮)findViewById(R.id.button3);
btn3.setOnClickListener(此);
btn5=(按钮)findViewById(R.id.button5);
btn5.setOnClickListener(此);
lv=(ListView)findViewById(R.id.listView1);
名称列表=新的ArrayList();
listAdapter=new ArrayAdapter(此,R.layout.row,名称列表);
lv.设置适配器(列表适配器);
lv.setOnItemClickListener(本);
getAllData();
//停止
}
私有ArrayList getAllData(){
//---获取所有联系人---
db.open();
c=db.getAllInfo();
if(c.moveToFirst()){
做{
anv=c.getString(1);
passInfo=c.getString(2);
titleInfo=c.getString(3);
//in=新字符串(anv、passInfo、titleInfo 2);
//姓名列表。添加(in);
添加(标题信息2);
//updateList();