在c#控件中存储数据库中的内容

时间:2010-08-13 11:04:52

标签: c# sql

我有一个名为ViewComments()的函数,它使用SQL命令从数据库中检索内容

     private void ViewComments()
     {           
        hookUp = new SqlConnection("Server=XXXX\\SQLEXPRESS;Database=WebExcerciseDB;" + "Integrated Security=True");
        SqlCmd = new SqlCommand("SELECT PersonName,PersonMail,Comment FROM CommentsTable", hookUp);
        try
        {
            hookUp.Open();

            reader = SqlCmd.ExecuteReader();
            while (reader.Read())
            {
                SQL_Result.Text += reader["PersonName"] + "  " + reader["PersonMail"] + "  " + reader["Comment"] + Convert.ToString(reader["PostDate"]) + "<br/>";
            }
        }
        catch (Exception)
        {
            MessageBox.Show("Error in database code\n");

        }
        finally
        {
            reader.Close();
            hookUp.Close();
        }
    }

我想将内容存储在IList<>控件中,该怎么做?

谢谢你..

2 个答案:

答案 0 :(得分:3)

创建一个具有所需值属性的类:

public class Comment
{
    public string PersonName {get;set;}
    public string PersonMail {get;set;}
    public string Comment {get;set;}
    public string PostDate {get;set;}
}

然后创建一个列表并用值填充:

List<Comment> comments = new List<Comment>();

...

while (reader.Read())
{
    comments.Add(new Comment()
    { 
        PersonName = reader["PersonName"], 
        PersonMail = reader["PersonMail"], 
        Comment = reader["Comment"], 
        PostDate = Convert.ToString(reader["PostDate"]) 
    });
}

答案 1 :(得分:1)

您还可以使用LINQ to SQL为您创建类。你这样做:

  1. 在Visual Studio Solution Explorer中,右键单击您的项目,然后选择 Add - &gt;新物品
  2. 在“类别”下,选择数据,然后选择 LINQ to SQL Classes
  3. 接下来,在服务器资源管理器中,添加一个到SQL数据库的新连接。
  4. 将所需的表,视图等从服务器资源管理器拖到DBML文件的对象关系设计器(编辑页面)上。中提琴! Visual Studio已经为您创建了类。
  5. 然后,要在代码中查询数据库,您可以执行以下操作:

        private void QueryMyData()
        {
            MyDbmlFileNameDataContext context = new MyDbmlFileNameDataContext("Server=XXXX\\SQLEXPRESS;Database=WebExcerciseDB;" + "Integrated Security=True");
    
            var query = from c in context.CommentsTable
                        where c.PersonName == "John Doe"        // This is optional if you want to sub-select.
                        select c;
    
            foreach (var comment in query)
            {
                Console.WriteLine(comment.PersonName + " " + comment.PersonMail + " " comment.Comment);
            }
        }
    

    您可以看到更多示例herehere

    警告:根据我个人的经验,LINQ对于极大的数据集似乎不是很有效。