在开发移动应用时,经常需要使用数据库来存储和管理数据。本文将指导如何在Windows Phone8.1应用中集成SQLite数据库,并实现基本的增删改查(CRUD)操作。
为了创建SQLite数据库,可以使用Mozilla的扩展程序SQLite Manager。首先,创建一个名为"PersonalDetails"的表,包含以下字段:
接下来,需要为Windows Phone8.1安装SQLite扩展。可以直接在Visual Studio中通过"扩展和更新"选项下载安装,或者从其他渠道下载安装。安装完成后,会在已安装的扩展中找到它。
创建一个新的空白Windows Phone8.1应用,并通过Nuget安装SQLite。安装后,项目中会新增两个与SQLite相关的cs文件。然后,需要在应用中添加对SQLite的引用。在构建应用时,如果遇到编译错误,可以通过更改平台设置从Any CPU改为ARM来解决。
为了在SQLite数据库中执行CRUD操作,首先需要创建一个模型类来表示数据库中的表。这个模型类将作为表的副本,类名必须与SQLite数据库中的表名相同。
public class PersonalDetails
{
[SQLite.AutoIncrement, SQLite.PrimaryKey]
public int Id { get; set; }
public string Name { get; set; }
public string Address { get; set; }
public string EmailId { get; set; }
public string PhoneNo { get; set; }
}
在模型类中,使用SQLite.AutoIncrement和SQLite.PrimaryKey属性标记主键字段和自增字段。
将SQLite数据库文件添加到项目中,并设置其构建操作为"内容",复制到输出目录设置为"如果较新则复制"。
接下来,创建CRUD函数。
public class DataProvider : IDisposable
{
private bool disposed = false;
private string _dbName = "Employees.sqlite";
public DataProvider()
{
}
~DataProvider()
{
Dispose(false);
}
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing)
{
if (!disposed)
{
if (disposing)
{
// 释放托管资源
}
disposed = true;
}
}
public List<PersonalDetails> GetEmployeeList()
{
List<PersonalDetails> employeeList = new List<PersonalDetails>();
try
{
using (var db = new SQLite.SQLiteConnection(_dbName))
{
employeeList = db.Query<PersonalDetails>("select * from PersonalDetails").ToList();
}
}
catch (Exception ex)
{
// 处理异常
}
return employeeList;
}
public bool AddEmployee(PersonalDetails employeeInfo)
{
bool result = false;
try
{
using (var db = new SQLite.SQLiteConnection(_dbName))
{
db.RunInTransaction(() =>
{
db.Insert(employeeInfo);
});
}
result = true;
}
catch (Exception ex)
{
// 处理异常
}
return result;
}
public bool UpdateEmployee(int id, PersonalDetails employeeInfo)
{
bool result = false;
try
{
using (var db = new SQLite.SQLiteConnection(_dbName))
{
var employee = db.Query<PersonalDetails>("select * from PersonalDetails where Id=" + id).FirstOrDefault();
if (employee != null)
{
employee.Address = employeeInfo.Address;
employee.Name = employeeInfo.Name;
db.RunInTransaction(() =>
{
db.Update(employee);
});
}
}
result = true;
}
catch (Exception ex)
{
// 处理异常
}
return result;
}
public bool DeleteEmployee(int id)
{
bool result = false;
try
{
using (var db = new SQLite.SQLiteConnection(_dbName))
{
var employee = db.Query<PersonalDetails>("select * from PersonalDetails where Id=" + id).FirstOrDefault();
if (employee != null)
{
db.RunInTransaction(() =>
{
db.Delete(employee);
});
}
}
result = true;
}
catch (Exception ex)
{
// 处理异常
}
return result;
}
}
DataProvider provider = new DataProvider();
// 添加员工
provider.AddEmployee(new PersonalDetails
{
Address = "154, Newyork",
EmailId = "ron@ymail.com",
Name = "Ron",
PhoneNo = "082-445434-333"
});
// 获取员工列表
var data = provider.GetEmployeeList();
// 更新员工信息
provider.UpdateEmployee(1, new PersonalDetails
{
Address = "187, Newyork",
Name = "Ron Jan",
});
// 删除员工
provider.DeleteEmployee(1);