Android SQLite 如何制作一个简易通讯录(附上代码)

实习阶段,今天没什么事可做,就写个通讯录玩玩,供大家参考一下具体实现方法和步骤,希望对大家有用。


首先作为通讯录总得有数据吧,那数据怎么来,又该如何显示呢,我用SQLite存储读写数据的。

先给大家看看效果图吧:


      图1.当没有添加时的显示内容


                                         图2.插入数据时的显示界面



                                                图3.添加联系人信息



                                        图四.上下文菜单显示信息



                               图五.单击某通讯录一员时的弹窗界面



可以看到右下角还有一个向上的按钮图片,它表示当数据较多需要分页滑动时,点击此按钮可以回到顶部(代码就一行,下面会有代码表示的)。

由此我们可以想到如何设计页面,主页面布局中主要有三个组件,一个无疑是ListView,一个是当数据为空时的TextView,另一个就是右下角的至顶按钮了(activity_main.xml)。

另外我们还需要设计一个XML布局用来显示每一条数据(即每一个通讯录用户),它包括头像,姓名,手机号码(item_listview_main.xml)。

另外我还创建了以及在menu文件夹下创建了分别表示插入时显示的界面,和菜单界面内容。看代码大家就应该清楚了。


还是直接上代码吧:

MySQLiteOpenHelper.java(数据库类)

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class MySQLiteOpenHelper extends SQLiteOpenHelper {
    // 数据库的名字
    private final static String DB_NAME = "db_mycontacts.db";
    // 数据库版本号
    private final static int VERSION = 1;
    // 数据库操作对象
    public SQLiteDatabase dbConn;

    public MySQLiteOpenHelper(Context context) {
        super(context, DB_NAME, null, VERSION);
        dbConn = this.getReadableDatabase();
    }
    // 创建数据库和其中的表结构的
    @Override
    public void onCreate(SQLiteDatabase db) {
        // 创建表结构
        db.execSQL("create table if not exists tb_mycontacts(_id integer primary key autoincrement , username , phonenumber)");
    }
    // 更新数据库及其中的 表结构的
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // 如果新的版本号高于旧的版本号
        if (newVersion > oldVersion) {
            // 删除表结构
            db.execSQL("drop table if exists tb_mycontacts");
            onCreate(db);
        }
    }
    /**
     * @作用:执行带占位符的select语句,查询数据,返回Cursor
     * @param sql
     * @param selectionArgs
     * @return Cursor
     */
    public Cursor selectCursor(String sql, String[] selectionArgs) {
        return dbConn.rawQuery(sql, selectionArgs);
    }

    /**
     * @作用:执行带占位符的select语句,返回结果集的个数
     * @param sql
     * @param selectionArgs
     * @return int
     */
    public int selectCount(String sql, String[] selectionArgs) {
        Cursor cursor = dbConn.rawQuery(sql, selectionArgs);
        if (cursor != null) {
            cursor.moveToFirst();
            int count = cursor.getInt(0);
            cursor.close();
            return count;
        } else {
            return 0;
        }
    }

    /**
     * @作用:执行带占位符的select语句,返回多条数据,放进List集合中。
     * @param sql
     * @param selectionArgs
     * @return List<Map<String, Object>>
     */
    public List<Map<String, Object>> selectList(String sql,
            String[] selectionArgs) {
        Cursor cursor = dbConn.rawQuery(sql, selectionArgs);
        return cursorToList(cursor);
    }

    /**
     * @作用:将Cursor对象转成List集合
     * @param Cursor
     *            cursor
     * @return List<Map<String, Object>>集合
     */
    public List<Map<String, Object>> cursorToList(Cursor cursor) {
        List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();

        String[] arrColumnName = cursor.getColumnNames();
        while (cursor.moveToNext()) {
            Map<String, Object> map = new HashMap<String, Object>();
            for (int i = 0; i < arrColumnName.length; i++) {
                Object cols_value = cursor.getString(i);
                // switch (cursor.getType(i)) {
                // case 1:
                // cols_value = cursor.getInt(i);
                // break;
                // case 2:
                // cols_value = cursor.getFloat(i);
                // break;
                // case 3:
                // cols_value = cursor.getString(i);
                // break;
                // case 4:
                // cols_value = cursor.getBlob(i);
                // break;
                // default:
                // break;
                // }
                map.put(arrColumnName[i], cols_value);
            }
            list.add(map);
        }
        if (cursor != null) {
            cursor.close();
        }
        return list;
    }

    /**
     * @作用:执行带占位符的update、insert、delete语句,更新数据库,返回true或false
     * @param sql
     * @param bindArgs
     * @return boolean
     */
    public boolean execData(String sql, Object[] bindArgs) {
        try {
            dbConn.execSQL(sql, bindArgs);
            return true;
        } catch (Exception e) {
            return false;
        }
    }

    public void destroy() {
        if (dbConn != null) {
            dbConn.close();
        }
    }
}

MainActivity.java

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import android.app.Activity;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ContextMenu.ContextMenuInfo;
import android.widget.AdapterView;
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {
    private MySQLiteOpenHelper dbHelper = null;
    private TextView emptyText;
    private ListView lv_main;
    private SimpleAdapter adapter = null;
    private List<Map<String, Object>> totalList = new ArrayList<Map<String, Object>>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        dbHelper = new MySQLiteOpenHelper(this);
        lv_main = (ListView) findViewById(R.id.listView_main);
        emptyText = (TextView) findViewById(R.id.textView_empty);
        totalList = getcontent();

        adapter = new SimpleAdapter(this, totalList, R.layout.item_listview_main,
                new String[] { "phonenumber", "username" },
                new int[] { R.id.textView_item_phonenumber, R.id.textView_item_username });
        lv_main.setAdapter(adapter);
        lv_main.setEmptyView(emptyText);
        registerForContextMenu(lv_main);

        lv_main.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
                final String number = totalList.get(arg2).get("phonenumber").toString();
                Builder builder = createAlertDialog(android.R.drawable.stat_sys_phone_call, "确定要拨打: " + number + " ?");
                builder.setPositiveButton("拨打", new OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Intent intent = new Intent();
                        intent.setAction(Intent.ACTION_CALL);
                        intent.setData(Uri.parse("tel:" + number));
                        startActivity(intent);
                    }
                });
                builder.show();
            }
        });
    }

    private List<Map<String, Object>> getcontent() {
        return dbHelper.selectList("select * from tb_mycontacts", null);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case R.id.action_insert:
            Builder builder_insert = createAlertDialog(android.R.drawable.ic_dialog_alert, "添加联系人信息");
            View view = getLayoutInflater().inflate(R.layout.dialog_insert, null);
            final EditText et_name = (EditText) view.findViewById(R.id.editText_dialog_name);
            final EditText et_number = (EditText) view.findViewById(R.id.editText_dialog_number);

            builder_insert.setView(view);
            builder_insert.setPositiveButton("确定", new OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    String name = et_name.getText() + "";
                    String number = et_number.getText() + "";
                    if (name.equals("") || number.equals("")) {
                        toast("whta are you 弄啥咧?");
                    } else {
                        String sql = "insert into tb_mycontacts(username, phonenumber)values(?,?)";
                        boolean flag = dbHelper.execData(sql, new Object[] { name, number });
                        if (flag) {
                            toast("插入成功!");
                            reloadView();
                        } else {
                            toast("插入失败!");
                        }
                    }
                }
            });
            builder_insert.show();
            break;
        case R.id.action_deleteAll:
            Builder builder_delete = createAlertDialog(android.R.drawable.ic_menu_delete, "确定要删除所有数据?");
            builder_delete.setPositiveButton("删除", new OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    String sql = "delete from tb_mycontacts";
                    boolean flag = dbHelper.deleteData(sql);
                    if (flag) {
                        toast("删除所有数据成功!");
                        reloadView();
                    } else {
                        toast("删除所有数据失败!");
                    }
                }
            });
            builder_delete.show();
        default:
            break;
        }
        return super.onOptionsItemSelected(item);
    }

    @Override
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
        super.onCreateContextMenu(menu, v, menuInfo);

        AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo;
        menu.setHeaderIcon(android.R.drawable.btn_dialog);
        String name = totalList.get(info.position).get("username").toString();
        String number = totalList.get(info.position).get("phonenumber").toString();
        menu.setHeaderTitle(name + "|" + number);
        getMenuInflater().inflate(R.menu.contextmenu_listview_main, menu);
    }

    @Override
    public boolean onContextItemSelected(MenuItem item) {
        AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
        String name = totalList.get(info.position).get("username").toString();
        String number = totalList.get(info.position).get("phonenumber").toString();
        final String _id = totalList.get(info.position).get("_id").toString();
        switch (item.getItemId()) {
        case R.id.action_delete:
            Builder builder_dele = createAlertDialog(android.R.drawable.ic_delete, "确定要删除?");
            builder_dele.setPositiveButton("删除", new OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    String sql = "delete from tb_mycontacts where _id=?";
                    boolean flag = dbHelper.execData(sql, new Object[] { _id });
                    if (flag) {
                        toast("删除数据成功!");
                        reloadView();
                    } else {
                        toast("删除数据失败!");
                    }
                }
            });
            builder_dele.show();
            break;

        case R.id.action_update:
            Builder builder_update = createAlertDialog(android.R.drawable.ic_dialog_alert, "修改联系人信息");
            View view = getLayoutInflater().inflate(R.layout.dialog_update, null);
            final EditText editText_name = (EditText) view.findViewById(R.id.editText_dialog_name);
            final EditText editText_number = (EditText) view.findViewById(R.id.editText_dialog_number);

            // 因为是更新,所以两个控件里应该有初始值
            editText_name.setText(name);
            editText_number.setText(number);

            builder_update.setView(view);

            builder_update.setPositiveButton("确认", new OnClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int which) {
                    String name_sure = editText_name.getText() + "";
                    String number_sure = editText_number.getText() + "";
                    String sql = "update tb_mycontacts set username=? , phonenumber=? where _id=?";
                    boolean flag = dbHelper.execData(sql, new Object[] { name_sure, number_sure, _id });
                    if (flag) {
                        toast("更新数据成功!");
                        reloadView();
                    } else {
                        toast("更新数据失败!");
                    }
                }
            });
            builder_update.show();
            break;

        case R.id.action_sendsms:
            Intent intent = new Intent();
            intent.setAction(Intent.ACTION_SENDTO);
            intent.setData(Uri.parse("smsto:" + number));
            intent.putExtra("sms_body", "dont't call me!");
            startActivity(intent);
            break;
        default:
            break;
        }
        return super.onContextItemSelected(item);
    }

    protected void reloadView() {
        totalList.clear();
        totalList.addAll(getcontent());
        adapter.notifyDataSetChanged();
    }

    public void clickButton(View view) {
        lv_main.setSelection(0);
    }

    protected void toast(String string) {
        Toast.makeText(MainActivity.this, string, Toast.LENGTH_LONG).show();
    }

    private Builder createAlertDialog(int icDialogAlert, String string) {
        Builder builder = new Builder(this);
        builder.setIcon(icDialogAlert);
        builder.setTitle(string);
        builder.setNegativeButton("取消", null);
        return builder;
    }
}


activity_main.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <ListView
        android:id="@+id/listView_main"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true" >
    </ListView>

    <ImageView
        android:id="@+id/imageView_totop"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:layout_marginBottom="10dp"
        android:layout_marginRight="10dp"
        android:onClick="clickButton"
        android:src="@drawable/lv_backtotop" />

    <TextView
        android:id="@+id/textView_empty"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:textSize="20sp"
        android:textColor="#00f"
        android:text="暂无联系人信息!" />

</RelativeLayout>

dialog_insert.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <EditText
        android:id="@+id/editText_dialog_name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:hint="请输入联系人姓名">

        <requestFocus />
    </EditText>

    <EditText
        android:id="@+id/editText_dialog_number"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:inputType="phone"
        android:hint="输入电话号码"/>

</LinearLayout>

dialog_update.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <EditText
        android:id="@+id/editText_dialog_name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:hint="联系人" >

        <requestFocus />
    </EditText>

    <EditText
        android:id="@+id/editText_dialog_number"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:hint="手机号码"
        android:inputType="phone" />

</LinearLayout>


item_listview_main.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <ImageView
        android:id="@+id/imageView_item_headpic"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:src="@drawable/ic_launcher" />

    <TextView
        android:id="@+id/textView_item_username"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="20dp"
        android:layout_toRightOf="@+id/imageView_item_headpic"
        android:textSize="24sp"
        android:textColor="#00f"
        android:text="TextView" />

    <TextView
        android:id="@+id/textView_item_phonenumber"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/imageView_item_headpic"
        android:layout_alignLeft="@+id/textView_item_username"
        android:text="TextView" />

</RelativeLayout>

contextmenu_listview_main.xml(menu文件夹下):

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:id="@+id/action_delete"
        android:title="删除"/>
    <item
        android:id="@+id/action_update"
        android:title="更新"/>
    <item
        android:id="@+id/action_sendsms"
        android:title="发短信"/>

</menu>

main.xml:(menu文件夹下)

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@+id/action_insert"
        android:orderInCategory="100"
        android:showAsAction="never"
        android:title="插入新数据"/>
    <item
        android:id="@+id/action_deleteAll"
        android:orderInCategory="100"
        android:showAsAction="never"
        android:title="删除所有数据"/>

</menu>

最后记得在AndroidManifest.xml中加入拨打电话和发短信的权限哦

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


最后附上源代码下载地址吧!

http://download.csdn.net/download/sinat_28566169/8949623                                                                                                

  • 7
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
以下是一个简单的通讯录应用程序的代码使用 Android Studio 中的 Java 编写。该应用程序允许用户添加、编辑和删除联系人,并将联系人信息保存在 SQLite 数据库中。 1. 首先,在 Android Studio 中创建一个新项目,并选择空活动。 2. 创建一个新布局文件 contact_item.xml,用于显示联系人信息。 ``` <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:padding="16dp"> <TextView android:id="@+id/nameTextView" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="18sp" /> <TextView android:id="@+id/phoneTextView" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="14sp" /> <TextView android:id="@+id/emailTextView" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="14sp" /> </LinearLayout> ``` 3. 创建一个新布局文件 activity_main.xml,用于显示联系人列表和添加按钮。 ``` <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <ListView android:id="@+id/contactListView" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" /> <Button android:id="@+id/addButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Add Contact" android:layout_gravity="center_horizontal" /> </LinearLayout> ``` 4. 创建一个新的 Java 类 Contact,用于表示联系人对象。 ``` public class Contact { private int id; private String name; private String phone; private String email; public Contact(int id, String name, String phone, String email) { this.id = id; this.name = name; this.phone = phone; this.email = email; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } } ``` 5. 创建一个新的 Java 类 ContactAdapter,用于将联系人对象绑定到 ListView 中的布局。 ``` public class ContactAdapter extends ArrayAdapter<Contact> { private List<Contact> contactList; private Context context; public ContactAdapter(List<Contact> contactList, Context context) { super(context, R.layout.contact_item, contactList); this.contactList = contactList; this.context = context; } @Override public View getView(int position, View convertView, ViewGroup parent) { LayoutInflater inflater = LayoutInflater.from(context); View view = inflater.inflate(R.layout.contact_item, parent, false); TextView nameTextView = view.findViewById(R.id.nameTextView); TextView phoneTextView = view.findViewById(R.id.phoneTextView); TextView emailTextView = view.findViewById(R.id.emailTextView); Contact contact = contactList.get(position); nameTextView.setText(contact.getName()); phoneTextView.setText(contact.getPhone()); emailTextView.setText(contact.getEmail()); return view; } } ``` 6. 在 MainActivity 类中添加以下代码,以初始化 ListView 和添加按钮,并在添加按钮被单击时打开一个新的 Activity 来添加联系人。 ``` public class MainActivity extends AppCompatActivity { private ListView contactListView; private Button addButton; private List<Contact> contactList; private ContactAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); contactListView = findViewById(R.id.contactListView); addButton = findViewById(R.id.addButton); contactList = new ArrayList<>(); adapter = new ContactAdapter(contactList, this); contactListView.setAdapter(adapter); addButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(MainActivity.this, AddContactActivity.class); startActivityForResult(intent, 1); } }); } } ``` 7. 创建一个新的 Java 类 AddContactActivity,用于显示添加联系人表单,并在提交表单时将联系人信息插入到 SQLite 数据库中。 ``` public class AddContactActivity extends AppCompatActivity { private EditText nameEditText; private EditText phoneEditText; private EditText emailEditText; private Button saveButton; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_add_contact); nameEditText = findViewById(R.id.nameEditText); phoneEditText = findViewById(R.id.phoneEditText); emailEditText = findViewById(R.id.emailEditText); saveButton = findViewById(R.id.saveButton); saveButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { String name = nameEditText.getText().toString(); String phone = phoneEditText.getText().toString(); String email = emailEditText.getText().toString(); if (!name.isEmpty() && !phone.isEmpty() && !email.isEmpty()) { Contact contact = new Contact(0, name, phone, email); addContact(contact); setResult(RESULT_OK); finish(); } else { Toast.makeText(AddContactActivity.this, "Please fill in all fields", Toast.LENGTH_SHORT).show(); } } }); } private void addContact(Contact contact) { ContactDatabase db = new ContactDatabase(this); db.addContact(contact); db.close(); } } ``` 8. 创建一个新的 Java 类 ContactDatabase,用于处理 SQLite 数据库操作。 ``` public class ContactDatabase extends SQLiteOpenHelper { private static final int DATABASE_VERSION = 1; private static final String DATABASE_NAME = "contact_database"; private static final String TABLE_NAME = "contacts"; private static final String ID_COLUMN = "id"; private static final String NAME_COLUMN = "name"; private static final String PHONE_COLUMN = "phone"; private static final String EMAIL_COLUMN = "email"; private Context context; public ContactDatabase(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); this.context = context; } @Override public void onCreate(SQLiteDatabase sqLiteDatabase) { String CREATE_CONTACTS_TABLE = "CREATE TABLE " + TABLE_NAME + "(" + ID_COLUMN + " INTEGER PRIMARY KEY AUTOINCREMENT," + NAME_COLUMN + " TEXT," + PHONE_COLUMN + " TEXT," + EMAIL_COLUMN + " TEXT" + ")"; sqLiteDatabase.execSQL(CREATE_CONTACTS_TABLE); } @Override public void onUpgrade(SQLiteDatabase sqLiteDatabase, int oldVersion, int newVersion) { sqLiteDatabase.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME); onCreate(sqLiteDatabase); } public void addContact(Contact contact) { SQLiteDatabase db = this.getWritableDatabase(); ContentValues values = new ContentValues(); values.put(NAME_COLUMN, contact.getName()); values.put(PHONE_COLUMN, contact.getPhone()); values.put(EMAIL_COLUMN, contact.getEmail()); db.insert(TABLE_NAME, null, values); db.close(); } public List<Contact> getAllContacts() { List<Contact> contactList = new ArrayList<>(); String selectQuery = "SELECT * FROM " + TABLE_NAME; SQLiteDatabase db = this.getWritableDatabase(); Cursor cursor = db.rawQuery(selectQuery, null); if (cursor.moveToFirst()) { do { Contact contact = new Contact( cursor.getInt(0), cursor.getString(1), cursor.getString(2), cursor.getString(3) ); contactList.add(contact); } while (cursor.moveToNext()); } cursor.close(); db.close(); return contactList; } public void deleteContact(Contact contact) { SQLiteDatabase db = this.getWritableDatabase(); db.delete(TABLE_NAME, ID_COLUMN + " = ?", new String[]{String.valueOf(contact.getId())}); db.close(); } public void updateContact(Contact contact) { SQLiteDatabase db = this.getWritableDatabase(); ContentValues values = new ContentValues(); values.put(NAME_COLUMN, contact.getName()); values.put(PHONE_COLUMN, contact.getPhone()); values.put(EMAIL_COLUMN, contact.getEmail()); db.update(TABLE_NAME, values, ID_COLUMN + " = ?", new String[]{String.valueOf(contact.getId())}); db.close(); } } ``` 这是一个简单的通讯录应用程序的代码,它允许用户添加、编辑和删除联系人,并将联系人信息保存在 SQLite 数据库中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值