如何使用SQLite在Android的表中获取联系人?

如何使用SQLite在Android的表中获取联系人?,android,database,sqlite,datatables,contacts,Android,Database,Sqlite,Datatables,Contacts,我想将手机上存储的联系人放入SQLite数据库中创建的表中。 列显示不同的字段,例如姓名、电话号码、电子邮件等 每行显示不同的触点。 如何实现这一点?使用androids content provider以游标的形式获取联系人数据,然后迭代游标行并将数据保存到sqlite 首先添加权限:- <uses-permission android:name="android.permission.READ_CONTACTS" > </uses-permission> 在whil

我想将手机上存储的联系人放入SQLite数据库中创建的表中。 列显示不同的字段,例如姓名、电话号码、电子邮件等 每行显示不同的触点。
如何实现这一点?

使用androids content provider以游标的形式获取联系人数据,然后迭代游标行并将数据保存到sqlite

首先添加权限:-

<uses-permission android:name="android.permission.READ_CONTACTS" >
</uses-permission>

在while循环中,将数据添加到sqlite数据库中

使用androids内容提供程序获取联系人数据作为游标,然后迭代游标行并将数据保存到sqlite

首先添加权限:-

<uses-permission android:name="android.permission.READ_CONTACTS" >
</uses-permission>
在while循环中添加到sqlite数据库中

尝试执行以下操作:-

public class DatabaseHelper extends SQLiteOpenHelper {

public static final String DATABASE_NAME = "EventBoard.db";
public static final String EVENTS_TABLE = "Events";
public static final String GUESTS_TABLE = "Guests";
public Context ctx;

public DatabaseHelper(Context context) {
     ctx = context;
    super(context, DATABASE_NAME, null, 1);
}

@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL("create table " + EVENTS_TABLE + "( _id INTEGER PRIMARY KEY AUTOINCREMENT,Name TEXT,Time TEXT,Date TEXT,Venue TEXT,Contact TEXT,Description TEXT);");
    db.execSQL("create table " + GUESTS_TABLE + "(Name TEXT,Phone TEXT,Email TEXT);");
    createGuestsTable(ctx);
}
尝试这样做:-

public class DatabaseHelper extends SQLiteOpenHelper {

public static final String DATABASE_NAME = "EventBoard.db";
public static final String EVENTS_TABLE = "Events";
public static final String GUESTS_TABLE = "Guests";
public Context ctx;

public DatabaseHelper(Context context) {
     ctx = context;
    super(context, DATABASE_NAME, null, 1);
}

@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL("create table " + EVENTS_TABLE + "( _id INTEGER PRIMARY KEY AUTOINCREMENT,Name TEXT,Time TEXT,Date TEXT,Venue TEXT,Contact TEXT,Description TEXT);");
    db.execSQL("create table " + GUESTS_TABLE + "(Name TEXT,Phone TEXT,Email TEXT);");
    createGuestsTable(ctx);
}

有没有办法直接从ContactsContracts.data获取数据?有没有办法直接从ContactsContracts.data获取数据?“public void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);//删除标题请求窗口功能(Window.FEATURE_NO_title);getWindow().setFlags(WindowManager.LayoutParams.FLAG_全屏,WindowManager.LayoutParams.FLAG_全屏);setContentView(R.layout.activity_main);myDb=new DatabaseHelper(this);myDb.CreateGuestTable(this);}“这就是我所做的。我在MainActivity中调用了我的方法,而不是DatabaseHelper类。它起作用了。。这是一个好的实践吗?您正在编写的代码很好。为了使您的代码有条理,为您的任务创建一个单独的类是一个好的实践。但是,由于只有一小部分代码用于数据库编写,您可以继续使用一个java f如果你想有单独的文件,那么我认为我上面的代码应该可以工作。在空指针异常中,你面临的唯一问题是上下文。因此,将main activities context'public void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);//删除title requestWindowFeature(Window.FEATURE_NO_TITLE);getWindow().setFlags(WindowManager.LayoutParams.FLAG_全屏,WindowManager.LayoutParams.FLAG_全屏);setContentView(R.layout.activity_main);myDb=new DatabaseHelper(this);myDb.CreateGuestTable(this);}“这就是我所做的。我在MainActivity中调用了我的方法,而不是DatabaseHelper类。它起作用了。。这是一个好的实践吗?您正在编写的代码很好。为了使您的代码有条理,为您的任务创建一个单独的类是一个好的实践。但是,由于只有一小部分代码用于数据库编写,您可以继续使用一个java f如果你想有一个单独的文件,那么我认为我上面的代码应该可以工作。在空指针异常中你面临的唯一问题是上下文。所以传递主活动上下文