如何在SQL Lite中选择项目?

时间:2017-03-11 11:03:17

标签: c# android sqlite xamarin

我使用Contact类创建一个SQl Lite表并向其添加一些项目:

string dbpath = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), "dbTest.db3");
var db = new SQLiteConnection(dbpath);
db.CreateTable<Contact>();
Contact contact1 = new Contact("ssS","555");
Contact contact2 = new Contact("ddd","444");
Contact contact3 = new Contact("ggg","111");
db.Insert(contact1);
db.Insert(contact2);
db.Insert(contact3);

这是我的联系人课程:

public class Contact
{
    public string Name { get; set; }
    public string PhoneNumber { get; set; }
    public Contact(String name,string phone)
    {
        Name = name;
        PhoneNumber = phone;
    }
    public Contact()
    {

    }
    public override string ToString()
    {
        return Name + "  " + PhoneNumber;
    }
}

现在我如何从桌面接收联系人2?

2 个答案:

答案 0 :(得分:1)

您可以尝试这样的事情:

var contact = db.Table<Contact>()
                .FirstOrDefault(c=>c.Name == "ddd");

答案 1 :(得分:0)

在数据库中,实体应具有唯一标识符并将其设置为主键。在您的情况下,最好为每个联系人添加一个ID(因为有些人也有相同的名称)。为此,您可以将课程修改为:

Contact.cs

public class Contact
{
    [PrimaryKey, AutoIncrement] //use this so SQLite know this ContactId is the primary key of Contact entity
    public int ContactId { get; set; }
    public string Name { get; set; }
    public string PhoneNumber { get; set; }
    ...
}

按主键检索联系人(ContactId):

var contact = db.Table<Contact>().Where(x => x.ContactId == 1) //replace 1 with ID of contact you'd need to retrieve

当然,您不需要使用int作为主键的数据类型,您可以使用string或符合您需求的其他人。

按名称检索联系人:

var contact = db.Table<Contact>().Where(x => x.Name == "ToBeSearchedName") //replace "ToBeSearchedName" with string of the contact you'd need to retrieve

希望这有帮助