1

我很难从我的 mdf 中获取存储的值。我可以看到他们在那里,一切都在按预期工作,直到我想抓住他们,我就是不能。我已经尝试了将近 48 小时,但我无法让它工作。我在这里阅读了大量指南和其他主题,但似乎对我没有任何帮助。我想我只是对这种访问和 mdf SQL 数据库的方式有所了解。我只是希望它放弃存储在指定行上的秘密。

我正在尝试访问存储在名为 Table1 的 mdf 文件中编号行(指定为 int 行)中的三个值并将它们返回给调用者。

我最近几个小时一直在战斗的代码是这样的:

       public static void loadAnimalData(int row, out string stringId, out string name, out double age)
    {
        int antal = AnimalsDBCount();
        String connString = "Data Source=.\\SQLEXPRESS;AttachDbFilename=|path.to.db|DBList.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";
        SqlConnection con = new SqlConnection(connString);
        con.Open();

        using (SqlCommand command = new SqlCommand("SELECT ID WHERE ID = " + row, con))
        {
            SqlDataReader reader = command.ExecuteReader();
            while (reader.Read())
            {
                m_stringId = reader.GetString(0);    
                m_name = reader.GetString(1); 
                m_age = reader.GetDouble(2); 

            }
        }
        con.Close();
        stringId = m_stringId;
        name = m_name;
        age = m_age;

    }

我在这里迷路了,我似乎无法访问指定的行或值,我哪里出错了?

4

3 回答 3

1

您可能想要的是;

m_stringId = reader[0].ToString();    
m_name = reader[1].ToString();  
m_age = reader[2].ToString();

SqlDataReaderread rows,因为你选择了一个,所以你不能访问其他的。

提供一种从 SQL Server 数据库中读取只进的行流的方法。

你应该选择其他列也喜欢;

using (SqlCommand command = new SqlCommand("SELECT ID, NAME, AGE WHERE ID = " + row, con))
{

    SqlDataReader reader = command.ExecuteReader();
    while (reader.Read())
    {
       m_stringId = reader.GetInt32(0);   
       m_name = reader.GetString(1); 
       m_age = reader.GetString(2); 
    }
}
于 2013-04-06T14:01:49.350 回答
1

您只选择ID(已知的),而不是任何其他列。

尝试改变:

"SELECT ID WHERE ID = " + row

"SELECT ID, NAME, AGE WHERE ID = " + row
于 2013-04-06T14:02:41.920 回答
1

您可能希望在您的选择语句中选择您的列

using (SqlCommand command = new SqlCommand("SELECT ID, name, age from TableOfInterest WHERE ID = " + row, con))

然后你可以在你的阅读器中使用它们

于 2013-04-06T14:03:11.630 回答