如何从数据库检索我的C#Windows窗体应用程序的信息

问题描述:

我目前正在开发一个C#Windows窗体应用程序。如何从数据库检索我的C#Windows窗体应用程序的信息

现在我正尝试使用SQL命令从数据库中检索信息以填写我的应用程序中需要的信息。

样本查询是“SELECT * FROM会员”

在成员表中会有类似的名称,位置,等等等等

如何我在应用程序代码就这样我的变量可以用数据库中的信息填充我的变量?

我的方法的代码将

private Panel createNotificationPanel(String name, String location, String imageExtension, String alertType, String memberid) 
    { 

    } 

我已经创建了一个成员类,其中包括所有的set和get方法,这一切都值

,目前我做了什么至今:

String connectionString =   ConfigurationManager.ConnectionStrings["connection2"].ConnectionString; 
     SqlConnection conn = new SqlConnection(connectionString); 
     SqlCommand cmd = new SqlCommand("select * from alert); 
     SqlDataAdapter da = new SqlDataAdapter(cmd); 

     DataSet dataset = new DataSet(); 

     conn.Open(); 
     da.Fill(dataset, "authenticate"); 
     conn.Close(); 


     int respond = (int)dataset.Tables["authenticate"].Rows[0]["respond"]; 

if (respond == 1) 
     { 
      //to fill in here 
     } 

检索我将它添加到列表如下

的信息后,
List.Add(new MemberAlert("name", "location", "type", "memberID", "imageExtension")); 

所以我想知道如何替换数据库中的信息 我不知道如何从这里继续。谁能帮我这个?

+1

除非你使用.NET 2.0,我建议你留下来远离DataSet/DataTable,而是使用实体框架。 –

DataSet dataset = new DataSet(); 
using (SqlConnection connection = 
    new SqlConnection(connectionString)) 
{ 
    SqlDataAdapter adapter = new SqlDataAdapter(); 
    adapter.SelectCommand = new SqlCommand(
     "select * from alert", connection); 
    adapter.Fill(dataset, "authenticate"); 
} 

// Load Data from the DataSet into the ListView 
private void LoadList() 
{ 
    // Get the table from the data set 
    DataTable dtable = dataset.Tables["authenticate"]; 

    // Clear the ListView control 
    listView1.Items.Clear(); 

    // Display items in the ListView control 
    for (int i = 0; i < dtable.Rows.Count; i++) 
    { 

     DataRow drow = dtable.Rows[i]; 

     // Define the list items 
     ListViewItem lvi = new ListViewItem(drow["name"].ToString()); 
     lvi.SubItems.Add (drow["location"].ToString()); 
     lvi.SubItems.Add (drow["type"].ToString()); 
     lvi.SubItems.Add (drow["memberID"].ToString()); 
     lvi.SubItems.Add (drow["imageExtension"].ToString()); 

     // Add the list items to the ListView 
     listView1.Items.Add(lvi); 
    } 
} 

如果您需要从数据集表中创建列表。你可以迭代上面的行并在循环内创建列表项并将它们添加到列表中。

+0

嗨,感谢您的回复,但那是我目前为止在我的文章中提到的,我的意思是我如何使用我检索的数据库中的信息填充变量? – Thomas

+1

@Thomas DataTable dt = dataset.Tables [0]; - 编辑:当你为响应整数赋值时,你已经完成了,我不知道你的意思。 –

+0

嗨即时对不起,因为我是编程新手。我的意思是因为我需要从数据库中检索名称,位置等信息,执行sql命令后,如何将信息放入我的变量中?或者简单地说,将数据添加到数据集后,我如何显示它? – Thomas

您可以加载数据,而无需使用ExecuteScalarExecuteReader填充中间的DataSet。因此,像下面:

cmd.CommandText = "select respond from alert"; 
var respond = cmd.ExecuteScalar(); 

if (respond != null && (int)respond == 1) 
{ 
    //... execute your command to select from Member here 
} 

然后,你if使用ExecuteReader内,并直接从SqlDataReader装载值:

cmd.CommandText = "select * from Member"; 

using (var reader = cmd.ExecuteReader()) 
{ 
    while(reader.Read()) 
    { 
     list.Add(new MemberAlert 
      { 
       Name = reader.GetString(0), 
       // load other properties from reader 
      }); 
    } 
}