我正在使用trubble从我的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;
}
我迷失在这里,我似乎无法访问特定的行或值,我哪里出错?
答案 0 :(得分:1)
你想要的是;
m_stringId = reader[0].ToString();
m_name = reader[1].ToString();
m_age = reader[2].ToString();
击> <击> 撞击>
SqlDataReader
读取行,因为您选择了一行,您无法访问其他人。
提供从SQL读取仅向前行的流的方法 服务器数据库。
您应该选择其他列,例如;
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);
}
}
答案 1 :(得分:1)
您只选择ID
(已知),而不是任何其他列。
尝试更改:
"SELECT ID WHERE ID = " + row
到
"SELECT ID, NAME, AGE WHERE ID = " + row
答案 2 :(得分:1)
您可能希望在select语句中选择列
using (SqlCommand command = new SqlCommand("SELECT ID, name, age from TableOfInterest WHERE ID = " + row, con))
然后您可以在阅读器中使用它们