如何在c#中检索数据库中的数据

本文关键字:数据库 数据 检索 | 更新日期: 2023-09-27 18:05:19

我写了这段代码,但我不知道为什么这行给出错误!

 String sname = dr.GetString ("name"); 
我代码:

SqlConnection cn = new SqlConnection(
    "Data Source=.;Initial Catalog=logindb;Integrated Security=True");
string query1 = "select * from tbllogin";
SqlCommand cmd = new SqlCommand(query1);
SqlDataReader dr;
try
{
    cn.Open();
    dr = cmd.ExecuteReader();
    while (dr.Read())
    {
        String sname = dr.GetString("name");
        comboBox1.Items.Add(sname);
    }
}
catch (Exception e)
{
    // do smth about exception
}

如何在c#中检索数据库中的数据

首先你必须再检查一遍:

SqlConnection cn = new SqlConnection(
"Data Source=.;Initial Catalog=logindb;Integrated Security=True");

Data Source=.;这是错误的,它会给你一个错误。

之后,您可以使用下面的代码来实现您想要的。下面的代码也使用using语句来解除连接。

using (
SqlConnection connection = new SqlConnection(strCon)) // strCon is the string containing connection string
{
    SqlCommand command = new SqlCommand("select * from tbllogin", connection);
    connection.Open();
    DataReader reader = command.ExecuteReader();
    if (reader.HasRows)
    {
        while (reader.Read())
        {
            comboBox1.Items.Add(reader.GetString(int index)); // index of column you want, because this method takes only int
        }
    } 
    reader.Close();
}

(令人惊讶的是)GetString仅以索引作为参数。看到MSDN

public override string GetString(int i)

没有其他签名:-(

但是你可以这样写:

String sname = dr.Item["name"].ToString();

MSDN说SqlDataReader.GetString方法接受一个int作为参数,这是列的索引。

你需要的是:

while (dr.Read())
{
    String sname = (string)dr["name"];
    comboBox1.Items.Add(sname);
}

这是你的代码:

    SqlConnection cn = new SqlConnection("Data Source=.;Initial Catalog=logindb;Integrated Security=True");
    string query1 = "select * from tbllogin"; SqlCommand cmd = new SqlCommand(query1); SqlDataReader dr;
    try {
        cn.Open(); dr = cmd.ExecuteReader();
        while (dr.Read())
        { String sname = (string)dr["name"];
        comboBox1.Items.Add(sname);
        }
    }
    catch (Exception e) { MessageBox.Show(e.Message, "An error occurred!"); }

catch块没有正确写入,您错过了(Exception e)部分