基本思路是这样,我需要做一个软件,同时在电脑和手机实现编辑数据的功能,所以没有加自动增长的主键,约定手机端得主键是奇数,现在我要做的是,在我的手机端先导入手机上的联系人 先说一下处理步骤:
1、读出现有手机上的联系人,如果有数据执行第二步。
2、调用OpDate类的GetNewId方法,查询当前表的主键最大编号
3、而OpDate类是通过调用Contact类的selectTopOne实现的
4、Contact类调用DbHelper的selectTopOne selectTopOne是通过rawQuery来查询数据,DbHelper继承SQLiteOpenHelper
这样做的原因是继承SQLiteOpenHelper的DbHelper的构造函数需要传一个Context,所以我的Contact类直接继承Activity,然后把它自己传进来而OpDate是一个通用操作类,不知道是不是我的思路有什么问题,执行到Contact类的selectTopOne方法时程序就挂了(java.lang.NullPointerException: println needs a message),我完全是自己研究的Android,但是这个东西又急着出效果,所以很多东西可能最基础的就有问题,但是又没那么多时间去补,还希望高手指点,顺便,如果有哪位好心的大哥大姐能给我当师傅,感激不尽,(我愿出学费)
下面贴一下具体的代码
InputData 类,实现导入数据
- Java code
package Base;import Human.Relation.R;import DataOperate.Contact;import android.app.Activity;import android.app.ListActivity;import android.content.ContentResolver;import android.content.ContentValues;import android.content.Context;import android.database.Cursor;import android.database.SQLException;import android.provider.ContactsContract;import android.provider.ContactsContract.PhoneLookup;import android.util.Log;import android.widget.Toast;import Comm.Format;import Comm.OpDate;import DataOperate.DbHelper;public class InputData extends ListActivity { Contact opDb; public InputData() { opDb=new Contact(); } // /导入系统联系人 public String inputContact(Context context) { String trValue = "联系人导入成功!"; Log.v("inputContact", "000000000000000000"); try { ContentResolver cr = context.getContentResolver(); Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI,null, null, null, null); if (cursor.getCount() <= 0) { return trValue = "联系人无资料请添加联系人资料"; } //获取插入ID值 Log.v("inputContact", "1111111111111"); [color=#FF0000]int PersonID=(new OpDate().GetNewId("T_Person", "PersonID"));[/color] Log.v("inputContact", Integer.toString(PersonID)); while (cursor.moveToNext()) { // 取得联系人名字 int nameFieldColumnIndex = cursor .getColumnIndex(PhoneLookup.DISPLAY_NAME); String name = cursor.getString(nameFieldColumnIndex); //获得联系人ID String contactId = cursor.getString(cursor .getColumnIndex(ContactsContract.Contacts._ID)); Cursor phone = cr.query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = " + contactId, null, null); Log.v("inputContact", "333333333333333333333"); // 取得电话号码(可能存在多个号码) while (phone.moveToNext()) { String strPhoneNumber = phone.getString(phone .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); Log.v("inputContact", "444444444_"+strPhoneNumber); ContentValues cv = new ContentValues(); Log.v("inputContact", "444_111111111111111111"); cv.put("PersonID",PersonID); PersonID+=2; Log.v("inputContact",Integer.toString(OpDate.getAccountID()) ); cv.put("AccountID", OpDate.getAccountID()); Log.v("inputContact", "444_333333333"); cv.put("CallOrderNo", 0); cv.put("SmsOrderNo",0); cv.put("PersonName", name); cv.put("sex", ""); cv.put("SimpleSpell", ""); cv.put("AllSpell", ""); cv.put("MobilePhone", strPhoneNumber); cv.put("MobilePhone2", ""); cv.put("HomePhone", ""); cv.put("CompanyPhone", ""); cv.put("CompanyName", ""); cv.put("CompanyAdress", ""); cv.put("Industry", ""); cv.put("Native", ""); cv.put("Departments",""); cv.put("Duties", ""); cv.put("TermTime", ""); cv.put("HomeAdress", ""); cv.put("Hobby", ""); cv.put("Birthday","" ); cv.put("IDCard", ""); cv.put("QQ", ""); cv.put("MSN", ""); cv.put("EMAIL", ""); cv.put("RSNeed", ""); cv.put("RSNature", ""); cv.put("TSDistance", ""); cv.put("RSTendency", ""); cv.put("RSType", ""); cv.put("mediaRemark", ""); cv.put("selfRing",ContactsContract.Contacts.CUSTOM_RINGTONE);//铃声 cv.put("GroupRing","" ); cv.put("PictureRemark", ContactsContract.Contacts.PHOTO_ID);//照片 cv.put("Remark", ""); cv.put("UpDateTime",new Format().FormatTimeNow()); cv.put("IsUsed", 1); cv.put("SynStatus", 1); Log.v("inputContact", "5555555555555"); try { Log.v("inputContact", "666666666666666666666666"); opDb.InsertData("T_Person", cv); Log.v("inputContact", "777777777777777777777"); } catch(SQLException ex) { Log.v("input Contact", "5555555555"+ex.getMessage()); } } phone.close(); } cursor.close(); } catch (Exception e) { Log.v("444444444", e.getMessage()); trValue=e.getMessage(); } return trValue; }}