Sqlite 在单击项目时覆盖我的字符串,我无法从数据库中删除

Sqlite 在单击项目时覆盖我的字符串,我无法从数据库中删除,sqlite,Sqlite,当我按下“Lägg till(Add)”时,我将文本放入我的三个编辑文本框中,然后按下OK,它将保存在数据库中,并在我的listview中显示第一个编辑框文本。当我按下listview中的某个项目时,我希望能够显示输入的文本,如果我按下“RADERA(删除)”,我希望能够将其从数据库和listview中删除 我的数据库适配器 package com.projekt; import android.content.ContentValues; import android.content.Co

当我按下“Lägg till(Add)”时,我将文本放入我的三个编辑文本框中,然后按下OK,它将保存在数据库中,并在我的listview中显示第一个编辑框文本。当我按下listview中的某个项目时,我希望能够显示输入的文本,如果我按下“RADERA(删除)”,我希望能够将其从数据库和listview中删除

我的数据库适配器

 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();