2013-09-27 65 views
0

所以,這裏有個問題,我有兩個類,Class Title是一個人的信息,即姓名,地址,網站,電話等,當人選擇保存按鈕時,他所有的個人數據保存在SQlite中,並且他被移至具有編輯文本視圖的Class Newscene,其中人員編寫故事。當他寫這個故事的時候,我希望它能夠保存在最近保存的標題中。但是在做它,一旦程序崩潰,給我error.here是我的標題類的從我正在將一個人的細節到數據庫的代碼在android中更新一些數據庫列SQlite

EditText title=(EditText)findViewById(R.id.editText1); 
       EditText author=(EditText)findViewById(R.id.editText2); 
       EditText company=(EditText)findViewById(R.id.editText3); 
       EditText address=(EditText)findViewById(R.id.editText4); 
       EditText email=(EditText)findViewById(R.id.editText5); 
       EditText website=(EditText)findViewById(R.id.editText6); 
       EditText phone=(EditText)findViewById(R.id.editText7); 
       title1=title.getText().toString(); 
       author1=author.getText().toString(); 
       company1=company.getText().toString(); 
       address1=address.getText().toString(); 
       email1=email.getText().toString(); 
       website1=website.getText().toString(); 
       phone1=phone.getText().toString(); 

       DatabaseHandler db = new DatabaseHandler(this); 

       /** 
       * CRUD Operations 
       * */ 
       // Inserting Contacts 
       Log.d("Insert: ", "Inserting .."); 
       db.addContact(new Contact(0, title1, author1,company1, address1, email1, website1, phone1, script1)); 

       // Reading all contacts 
       Log.d("Reading: ", "Reading all contacts.."); 
       List<Contact> contacts = db.getAllContacts(); 

       for (Contact cn : contacts) { 
        String log = "Id: "+cn.getID()+" ,Name: " + cn.get_name() + " ,Author: " + cn.get_author() + " ,company: " + cn.get_company() + " ,address: " + cn.get_address() 
        + " ,email: " + cn.get_email() + " ,Website: " + cn.get_website() + " ,Phone: " + cn.getPhoneNumber() + " ,Script: " + cn.getscript(); 
         // Writing Contacts to log 
       Log.d("Name: ", log); 
       name_title=cn.getName().toString(); 
       } 

         //Passing id through intent 
       Intent i = new Intent(Title.this,Newscene.class); 
       i.putExtra("EXTRA_ID", id); 
       startActivity(i); 

這是我得到它Newscene類

 protected void onCreate(Bundle savedInstanceState) { 
       super.onCreate(savedInstanceState); 
       setContentView(R.layout.activity_newscene); 

       Intent i = getIntent(); 
       idval = i.getStringExtra("EXTRA_ID").toString(); 
       // i am converting this idval string to integer below 

       } 

然後在同一個類中,一切都一個人在它

  String strSaveindb = previous + scene1 + ending; 

立即保存的EditText寫,然後我在我的聯繫人類型設置這個和更新d atabase像這樣的(這在Newscene活動正在做的)

  cn.setscript(strSaveindb); 
      db.updateContactscript(db.getContact(1)); 

現在在我的數據庫處理器類我有updatecontact功能和updatecontactscript功能,下面是我的數據庫處理程序類的代碼

public void onCreate(SQLiteDatabase db) { 
     String CREATE_CONTACTS_TABLE = "CREATE TABLE " + TABLE_CONTACTS + "(" 
       + KEY_ID + " INTEGER PRIMARY KEY," 
       + KEY_NAME + " TEXT," 
       + KEY_AUTHOR + " TEXT," 
       + KEY_COMPANY + " TEXT," 
       + KEY_ADDRESS + " TEXT," 
       + KEY_EMAIL + " TEXT," 
       + KEY_WEBSITE + " TEXT," 
       + KEY_PH_NO + " TEXT," 
       + KEY_SCRIPT + "TEXT" + ")"; 
     db.execSQL(CREATE_CONTACTS_TABLE); 
    } 

這是添加聯繫人功能

void addContact(Contact contact) { 
     SQLiteDatabase db = this.getWritableDatabase(); 

     ContentValues values = new ContentValues(); 
     values.put(KEY_NAME, contact.getName()); // Contact Name 
     values.put(KEY_AUTHOR, contact.getPhoneNumber()); 
     values.put(KEY_COMPANY, contact.getPhoneNumber()); 
     values.put(KEY_ADDRESS, contact.getPhoneNumber()); 
     values.put(KEY_EMAIL, contact.getPhoneNumber()); 
     values.put(KEY_WEBSITE, contact.getPhoneNumber()); 
     values.put(KEY_PH_NO, contact.getPhoneNumber()); 
     values.put(KEY_SCRIPT, contact.getscript());// Contact Phone 

     // Inserting Row 
     db.insert(TABLE_CONTACTS, null, values); 
     db.close(); // Closing database connection 
    } 

這是獲得conatct功能

Contact getContact(int id) { 
     SQLiteDatabase db = this.getReadableDatabase(); 

     Cursor cursor = db.query(TABLE_CONTACTS, new String[] { KEY_ID, 
       KEY_NAME, KEY_AUTHOR, KEY_COMPANY, KEY_ADDRESS, KEY_EMAIL, KEY_WEBSITE, KEY_PH_NO , KEY_SCRIPT }, KEY_ID + "=?", 
       new String[] { String.valueOf(id) }, null, null, null, null); 
     if (cursor != null) 
      cursor.moveToFirst(); 

     Contact contact = new Contact(Integer.parseInt(cursor.getString(0)), 
       cursor.getString(1), cursor.getString(2),cursor.getString(3),cursor.getString(4),cursor.getString(5),cursor.getString(6),cursor.getString(7),cursor.getString(8)); 
     // return contact 
     return contact; 
    } 

而這些更新聯繫,並只更新腳本

// Updating single contact 
    public int updateContact(Contact contact) { 
     SQLiteDatabase db = this.getWritableDatabase(); 

     ContentValues values = new ContentValues(); 
     values.put(KEY_NAME, contact.getName()); 
     values.put(KEY_AUTHOR, contact.get_author()); 
     values.put(KEY_COMPANY, contact.get_company()); 
     values.put(KEY_ADDRESS, contact.get_address()); 
     values.put(KEY_EMAIL, contact.get_email()); 
     values.put(KEY_WEBSITE, contact.get_website()); 
     values.put(KEY_PH_NO, contact.getPhoneNumber()); 
     values.put(KEY_SCRIPT, contact.getscript()); 

     // updating row 
     return db.update(TABLE_CONTACTS, values, KEY_ID + " = ?", 
       new String[] { String.valueOf(contact.getID()) }); 
    } 

    //UPDATING SCRIPT 

    public int updateContactscript(Contact contact) { 
     SQLiteDatabase db = this.getWritableDatabase(); 

     ContentValues values = new ContentValues(); 

     values.put(KEY_SCRIPT, contact.getscript()); 

     // updating row 
     return db.update(TABLE_CONTACTS, values, KEY_ID + " = ?", 
       new String[] { String.valueOf(contact.getID()) }); 
    } 

如何更新腳本盈最近已經將接觸ID的功能。我在這裏卡住現在看兩天:(

+0

你錯過了'「TEXT」的空間'我想你是我第五次今天看。 – njzk2

+0

「TEXT」??在哪裏? –

回答

1

修復這一行:

KEY_SCRIPT + "TEXT" 

KEY_SCRIPT + " TEXT"