2016-01-09 32 views
1

我已经创建了表并将几行放入它。有没有办法从表中解析我自己的对象?解析来自sql的对象

class Human 
{ 
    string name; 
    int age; 

    public Human(string name, int age) 
    { 
     this.name = name; 
     this.age = age; 
    } 
} 

-- create table  
string sql = "create table human (name varchar(20), age int)"; 
SQLiteCommand command = new SQLiteCommand(sql, m_dbConnection); 
command.ExecuteNonQuery(); 

-- insert sample data 
string sql = "insert into human (name, age) values ('John', 20)"; 
command = new SQLiteCommand(sql, m_dbConnection); 
command.ExecuteNonQuery(); 

-- get the data back from that table 
string sql = "select * from human"; 
command = new SQLiteCommand(sql, m_dbConnection); 
SQLiteDataReader reader = command.ExecuteReader(); 

while (reader.Read()) 

现在我该如何解析我的阅读器中的Human实例?

+0

另请参见:在上一个查询中,**在调用'.executeReader'后不要调用'.ExecuteQuery()'!只需一个电话 - 既然你想要找回结果集,你需要'.ExecuteReader()'.... –

+0

@marc_s这是一个问题的样本,它不是一个真正的代码,但无论如何 - 谢谢! – Azi

回答

2

是的,你可以

它非常简单逸岸。 试试这个:

//Create Collection of Human to store the values 
List<Human> Humans = new List<Human>(); 
while (reader.Read()) 
{ 
    //Create Human Object from Sql Reader 
    Human h=new Human(reader.getString(0),reader.getInt(1)); 
    //Add the object to collection 
    Humans.add(h); 
} 

人类将所有人类物体作为行获得。

2

是的,有一种方法。我建议使用Entity Framework,它基本上允许您将代码中的类型绑定到数据库中的表。

SQLite的,这里有几个链接,让你开始:

http://www.bricelam.net/2012/10/entity-framework-on-sqlite.html

http://erikej.blogspot.co.uk/2014/11/using-sqlite-with-entity-framework-6.html

+0

这可能会提供更有用的评论 - 提问者确实想知道如何从他们设置的数据读取器中获取数据。在某些情况下,EF有时是*更好的选择,这可能值得提出,但这不是真正解决问题的答案。 –

+0

我的项目并不是很复杂,在时间和速度上都不存在任何阻碍,所以我并不需要使用框架更复杂。仍然感谢你的帮助! – Azi

+0

感谢@MatthewHaugen的建议 - 事后看来,我同意。 XSIon,不客气。 –