Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android SQlite不更新数据_Android_Android Sqlite - Fatal编程技术网

Android SQlite不更新数据

Android SQlite不更新数据,android,android-sqlite,Android,Android Sqlite,我的DatabaseHandler类: public class DatabaseHandler extends SQLiteOpenHelper { private static final String LOG_TAG = "debugger"; //database version private static final int DATABASE_VERSION = 1; //database name; private static fina

我的DatabaseHandler类:

public class DatabaseHandler extends SQLiteOpenHelper {

    private static final String LOG_TAG = "debugger";

    //database version
    private static final int DATABASE_VERSION = 1;
    //database name;
    private static final String DATABASE_NAME = "appdb";

    private static final String TABLE_PROJECT = "projects";     
    //Project Table Columns
    private static String PROJECT_ID = "Project_id";
    private static final String PROJECT_NAME = "Name";
    private static final String PROJECT_DESCRIPTION = "Description";
    private static final String CLIENT_NAME = "Client_Name";
    private static final String LOCATION = "Location";

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

    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        Log.d(LOG_TAG, "Executing OnCreate");   
        createProjectTable(db);     
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {      

    }

    private void createProjectTable(SQLiteDatabase db){
        String CREATE_PROJECT_TABLE = "CREATE TABLE " + TABLE_PROJECT + "("
        + PROJECT_ID + " INTEGER PRIMARY KEY, "
        + PROJECT_NAME + " TEXT, "
        + PROJECT_DESCRIPTION + " TEXT, "
        + CLIENT_NAME + " TEXT, "
        + LOCATION + " TEXT );";
        Log.d(LOG_TAG, "Creating Project table --> " + CREATE_PROJECT_TABLE);
        db.execSQL(CREATE_PROJECT_TABLE);
    }   

    public void addProject(Project project){
         SQLiteDatabase db = this.getWritableDatabase();
         ContentValues values = new ContentValues();
         values.put(PROJECT_NAME, project.getName()); // Contact Name
         values.put(PROJECT_DESCRIPTION, project.getDescription()); // Contact Phone
         values.put(CLIENT_NAME, project.getClient_name());
         values.put(LOCATION, project.getLocation());
         // Inserting Row
         Log.d(LOG_TAG, "Inserting Project....");
         db.insert(TABLE_PROJECT, null, values);
         Log.d(LOG_TAG, "Inserted successfullyt....");
         db.close(); // Closing database connection
    }

    public List<Project> getProjects(){
        List<Project> projects = new ArrayList<Project>();
        String selectQuery = "SELECT  * FROM " + TABLE_PROJECT;
        SQLiteDatabase db = this.getReadableDatabase();
        Cursor cursor = db.rawQuery(selectQuery, null);
        if(cursor.getCount() != 0){
            Log.d(LOG_TAG, "Projects found...");
          if (cursor.moveToFirst()) {
            do {
                Project project = new Project();
                project.setName(cursor.getString(1));
                project.setClient_name(cursor.getString(2));
                project.setDescription(cursor.getString(3));
                project.setLocation(cursor.getString(4));
                projects.add(project);
            } while (cursor.moveToNext());
          }
        }
      return projects;
    }

    public void updateProject(Project project){
         SQLiteDatabase db = this.getWritableDatabase();
         ContentValues values = new ContentValues();
         values.put(PROJECT_NAME, project.getName()); // Contact Name
         values.put(PROJECT_DESCRIPTION, project.getDescription()); // Contact Phone
         values.put(CLIENT_NAME, project.getClient_name());
         values.put(LOCATION, project.getLocation());
         String where = PROJECT_ID + " = ? ";       
         String [] value = { String.valueOf(project.getProject_id()) };
         try{
             int count = db.update(TABLE_PROJECT, values, where , value);
             Log.d(LOG_TAG, "Updated rows -> " + count);
         }catch (Exception e) {
            e.printStackTrace();
        }
        db.close();
    }
}
当用户点击更新按钮时,我调用更新方法

dbHelper.updateProject(newProject);
dbHelper
中的my
updateProject
方法中,count的值为0

dbHelper.getProjects()
返回旧值,即使在update方法之后调用此方法

我使用调试器检查了是否将新值传递给
updateProject
方法,但它们没有得到反映。方法
addProject
运行良好

项目类

public class Project implements Serializable{

    private static final long serialVersionUID = 1L;
    private int project_id;
    private String name;
    private String description;
    private String client_name;
    private String location;

    public Project(){

    }

    public Project(int project_id, String name, String client_name,String description, String location){
        this.project_id = project_id;
        this.name = name;
        this.description = description;
        this.client_name = client_name;
        this.location = location;
    }

    public int getProject_id() {
        return project_id;
    }

    public void setProject_id(int project_id) {
        this.project_id = project_id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public String getClient_name() {
        return client_name;
    }

    public void setClient_name(String client_name) {
        this.client_name = client_name;
    }

    public String getLocation() {
        return location;
    }

    public void setLocation(String location) {
        this.location = location;
    }

}
请任何人帮忙。

试试这个

 String [] value = { Integer.toString(project.getProject_id()) };
使用此-

String[] value = new String []{ String.valueOf(project.getProject_id()) };

项目id是int数据类型,因此您应该使用

  int value = project.getProject_id();

也发布您的getProject\u id()方法…请检查数据库中是否存在要更新的“PROJECT\u id”行记录。该行的存在是因为它是从数据库填充的listview中的一行。在这些活动中是否应该有一个公共的dbHelper对象?我正在为每个活动创建新对象。您应该查找更新方法的文档,以便知道我要做什么您必须使用db.update(TABLE_PROJECT,values,PROJECT_ID+“=”+value,null);您插入的数据是什么?还有,您正在尝试更新哪些数据?。更新中的行数=0表示“未更新任何内容”。请检查在更新中传递的参数。数据是listview中的一项。它从数据库中填充。我传递的参数是一个具有更新值的对象。代码对我来说运行良好。我也能更新。从listview填充项目对象时似乎存在一些问题。请检查…我已检查..项目对象返回正确的id和其他值。不确定出了什么问题:(不,我不知道如何使它工作:(它只是不更新数据库中的行。update方法总是返回零。
  int value = project.getProject_id();