安卓通讯录系统mysql_Android手机通讯录项目开发--联系人数据库contacts2.db介绍
时间: 2024-03-18 18:44:25 浏览: 12
好的,关于安卓通讯录系统的开发,通讯录数据一般是存储在 SQLite 数据库中的。其中,联系人数据库 contacts2.db 是一个非常重要的数据库,它存储了所有联系人的信息,包括姓名、电话号码、电子邮件、地址等等。这个数据库也是 Android 系统中的一个系统应用,它的存储路径一般是 /data/data/com.android.providers.contacts/databases/contacts2.db。
contacts2.db 数据库的结构比较复杂,它主要包括以下几个表:
- raw_contacts:这个表中存储了联系人的原始信息,每行对应一个联系人,每行包含一个 _id 字段,表示该联系人的唯一标识符。
- data:这个表中存储了联系人的具体信息,每行对应一个信息,例如电话号码、电子邮件、地址等等。每行包含一个 raw_contact_id 字段,表示该信息所属的联系人的唯一标识符。
- contacts:这个表中存储了联系人的基本信息,例如姓名、头像等等。每行对应一个联系人,每行包含一个 _id 字段,表示该联系人的唯一标识符。
除了这些表之外,还有一些辅助表,例如 mimetype、groups 等等,用于存储联系人信息的类型和联系人分组等等。
在 Android 应用中,我们可以通过 ContentResolver 这个类来访问 contacts2.db 数据库中的数据,从而实现对联系人信息的读取和修改等操作。
相关问题
python通讯录程序设计-python数据库编程 Mysql实现通讯录的修改联系人、删除联系人
好的,我可以帮你解决这个问题。在这个程序中,我们将使用Python和MySQL数据库来实现通讯录的修改联系人和删除联系人的功能。
首先,我们需要创建一个MySQL数据库来存储我们的通讯录信息。我们可以使用以下命令在MySQL中创建一个名为"contacts"的数据库:
```
CREATE DATABASE contacts;
```
接下来,我们需要创建一个名为"people"的表来存储我们的联系人信息。该表应该包含以下列:id, name, phone和email。我们可以使用以下命令创建该表:
```
CREATE TABLE people (
id INT(11) NOT NULL AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
phone VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL,
PRIMARY KEY (id)
);
```
现在我们已经创建了数据库和表,接下来我们将编写Python代码来实现修改联系人和删除联系人的功能。
首先,我们需要连接到MySQL数据库。我们可以使用以下代码来实现:
```python
import mysql.connector
# Connect to the database
db = mysql.connector.connect(
host="localhost",
user="root",
password="password",
database="contacts"
)
# Create a cursor
cursor = db.cursor()
```
接下来,我们将编写函数来实现修改联系人和删除联系人的功能。
修改联系人的函数应该接受一个联系人的ID作为参数,并提示用户输入要修改的信息。我们可以使用以下代码实现:
```python
def update_contact(id):
# Get the contact
cursor.execute("SELECT * FROM people WHERE id = %s", (id,))
contact = cursor.fetchone()
# Print the current contact information
print("Current information:")
print(f"Name: {contact[1]}")
print(f"Phone: {contact[2]}")
print(f"Email: {contact[3]}")
# Prompt the user for new information
name = input("Enter new name (press enter to skip): ")
phone = input("Enter new phone number (press enter to skip): ")
email = input("Enter new email address (press enter to skip): ")
# Update the contact
if name:
cursor.execute("UPDATE people SET name = %s WHERE id = %s", (name, id))
if phone:
cursor.execute("UPDATE people SET phone = %s WHERE id = %s", (phone, id))
if email:
cursor.execute("UPDATE people SET email = %s WHERE id = %s", (email, id))
# Commit the changes
db.commit()
print("Contact updated.")
```
删除联系人的函数应该接受一个联系人的ID作为参数,并提示用户确认是否要删除联系人。我们可以使用以下代码实现:
```python
def delete_contact(id):
# Get the contact
cursor.execute("SELECT * FROM people WHERE id = %s", (id,))
contact = cursor.fetchone()
# Print the current contact information
print("Current information:")
print(f"Name: {contact[1]}")
print(f"Phone: {contact[2]}")
print(f"Email: {contact[3]}")
# Confirm deletion
confirm = input("Are you sure you want to delete this contact? (y/n) ")
if confirm.lower() == "y":
# Delete the contact
cursor.execute("DELETE FROM people WHERE id = %s", (id,))
# Commit the changes
db.commit()
print("Contact deleted.")
else:
print("Deletion cancelled.")
```
现在我们已经编写了修改联系人和删除联系人的函数,接下来我们将编写一个主函数来处理用户输入,并调用这些函数。
```python
def main():
while True:
print("1. Add contact")
print("2. Update contact")
print("3. Delete contact")
print("4. Quit")
choice = input("Enter your choice: ")
if choice == "1":
# Add contact
name = input("Enter name: ")
phone = input("Enter phone number: ")
email = input("Enter email address: ")
cursor.execute("INSERT INTO people (name, phone, email) VALUES (%s, %s, %s)", (name, phone, email))
db.commit()
print("Contact added.")
elif choice == "2":
# Update contact
id = input("Enter contact ID: ")
update_contact(id)
elif choice == "3":
# Delete contact
id = input("Enter contact ID: ")
delete_contact(id)
elif choice == "4":
# Quit
break
else:
print("Invalid choice.")
# Close the database connection
db.close()
if __name__ == "__main__":
main()
```
现在我们已经完成了我们的Python通讯录程序。用户可以选择添加、修改或删除联系人。所有联系人信息都存储在MySQL数据库中。
mysql通讯录管理系统_通讯录管理系统(数据存储在数据库中,可实现数据的增删改查)...
好的,通讯录管理系统需要以下功能:
1. 添加联系人
2. 删除联系人
3. 修改联系人信息
4. 查询联系人信息
首先,我们需要设计数据库表,表结构如下:
```
CREATE TABLE `contacts` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL,
`phone` varchar(20) NOT NULL,
`email` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;
```
接下来,我们可以使用 Python 和 MySQLdb 模块来实现通讯录管理系统。
首先,我们需要连接到数据库:
```python
import MySQLdb
# 连接数据库
db = MySQLdb.connect(host="localhost", user="root", passwd="password", db="test")
# 创建游标
cursor = db.cursor()
```
接下来,我们可以实现添加联系人的功能:
```python
def add_contact(name, phone, email=None):
try:
# 执行 SQL 语句
cursor.execute("INSERT INTO contacts (name, phone, email) VALUES (%s, %s, %s)", (name, phone, email))
# 提交到数据库执行
db.commit()
print("添加联系人成功")
except:
# 发生错误时回滚
db.rollback()
print("添加联系人失败")
```
然后,我们可以实现删除联系人的功能:
```python
def delete_contact(id):
try:
# 执行 SQL 语句
cursor.execute("DELETE FROM contacts WHERE id = %s", (id,))
# 提交到数据库执行
db.commit()
print("删除联系人成功")
except:
# 发生错误时回滚
db.rollback()
print("删除联系人失败")
```
接下来,我们可以实现修改联系人信息的功能:
```python
def update_contact(id, name=None, phone=None, email=None):
# 构建 SET 子句
set_clause = ""
if name is not None:
set_clause += "name = %s, "
if phone is not None:
set_clause += "phone = %s, "
if email is not None:
set_clause += "email = %s, "
set_clause = set_clause[:-2] # 去掉最后的逗号和空格
try:
# 执行 SQL 语句
cursor.execute(f"UPDATE contacts SET {set_clause} WHERE id = %s", (name, phone, email, id))
# 提交到数据库执行
db.commit()
print("修改联系人信息成功")
except:
# 发生错误时回滚
db.rollback()
print("修改联系人信息失败")
```
最后,我们可以实现查询联系人信息的功能:
```python
def query_contact(name=None, phone=None, email=None):
# 构建 WHERE 子句
where_clause = ""
if name is not None:
where_clause += f"name = '{name}' AND "
if phone is not None:
where_clause += f"phone = '{phone}' AND "
if email is not None:
where_clause += f"email = '{email}' AND "
where_clause = where_clause[:-5] # 去掉最后的 AND
try:
# 执行 SQL 语句
if where_clause:
cursor.execute(f"SELECT * FROM contacts WHERE {where_clause}")
else:
cursor.execute("SELECT * FROM contacts")
results = cursor.fetchall()
for row in results:
print(f"id={row[0]}, name={row[1]}, phone={row[2]}, email={row[3]}")
except:
print("查询联系人信息失败")
```
完整代码如下:
```python
import MySQLdb
# 连接数据库
db = MySQLdb.connect(host="localhost", user="root", passwd="password", db="test")
# 创建游标
cursor = db.cursor()
# 添加联系人
def add_contact(name, phone, email=None):
try:
# 执行 SQL 语句
cursor.execute("INSERT INTO contacts (name, phone, email) VALUES (%s, %s, %s)", (name, phone, email))
# 提交到数据库执行
db.commit()
print("添加联系人成功")
except:
# 发生错误时回滚
db.rollback()
print("添加联系人失败")
# 删除联系人
def delete_contact(id):
try:
# 执行 SQL 语句
cursor.execute("DELETE FROM contacts WHERE id = %s", (id,))
# 提交到数据库执行
db.commit()
print("删除联系人成功")
except:
# 发生错误时回滚
db.rollback()
print("删除联系人失败")
# 修改联系人信息
def update_contact(id, name=None, phone=None, email=None):
# 构建 SET 子句
set_clause = ""
if name is not None:
set_clause += "name = %s, "
if phone is not None:
set_clause += "phone = %s, "
if email is not None:
set_clause += "email = %s, "
set_clause = set_clause[:-2] # 去掉最后的逗号和空格
try:
# 执行 SQL 语句
cursor.execute(f"UPDATE contacts SET {set_clause} WHERE id = %s", (name, phone, email, id))
# 提交到数据库执行
db.commit()
print("修改联系人信息成功")
except:
# 发生错误时回滚
db.rollback()
print("修改联系人信息失败")
# 查询联系人信息
def query_contact(name=None, phone=None, email=None):
# 构建 WHERE 子句
where_clause = ""
if name is not None:
where_clause += f"name = '{name}' AND "
if phone is not None:
where_clause += f"phone = '{phone}' AND "
if email is not None:
where_clause += f"email = '{email}' AND "
where_clause = where_clause[:-5] # 去掉最后的 AND
try:
# 执行 SQL 语句
if where_clause:
cursor.execute(f"SELECT * FROM contacts WHERE {where_clause}")
else:
cursor.execute("SELECT * FROM contacts")
results = cursor.fetchall()
for row in results:
print(f"id={row[0]}, name={row[1]}, phone={row[2]}, email={row[3]}")
except:
print("查询联系人信息失败")
```
注意事项:
1. 在实际使用时,不要直接把密码写在代码里,可以使用配置文件或环境变量等方式进行管理。
2. 在实际使用时,应该进行数据校验和安全过滤,防止 SQL 注入等安全问题。