Почему я получаю пустые результаты, используя сгенерированный код из БД? - PullRequest
0 голосов
/ 13 июня 2011

Я использую SQL Server 2005. У меня есть таблица scores с 6 строками и столбцами - name, score и id.

Я добавил источник данных с помощью VS, и он сгенерировал набор данныхназывается testDataSet.

Итак, я попробовал следующий код, который дает мне нулевые результаты:

testDataSet db = new testDataSet();

var result = from row in db.scores
             select row.name;

В чем проблема?

Ответы [ 4 ]

1 голос
/ 13 июня 2011

У вас есть проблема в том, что вы запрашиваете пустое значение DataSet.

Сначала вы должны создать соединение с вашим testDataSet и заполнить содержащиеся в нем таблицы данными из вашей базы данных.

Если вы создали testDataSet с помощью автоматизированных инструментов, предоставляемых VS, тогда инструмент также создаст соответствующий TableDataAdapters (в своем собственном пространстве имен) для заполнения и обновления вашего DataSet.

Инициализируйте соответствующий TableDataAdapter и извлеките данные из базы данных методом Fill(db).

0 голосов
/ 13 июня 2011

Попробуйте вместо этого код:

scoresTableAdapter adapter = new scoresTableAdapter();
var result = from row in adapter.GetData() select row.name;

Другие правы, что ваша проблема в том, что вы не запрашиваете данные. При создании набора данных для вас также создается адаптер, который поможет вам запрашивать данные, как показано выше.

0 голосов
/ 13 июня 2011

вы должны запросить dataTable следующим образом:

DataTable products = ds.Tables["Product"];

var query = products.AsEnumerable().
Select(product => new
{
    ProductName = product.Field<string>("Name"),
    ProductNumber = product.Field<string>("ProductNumber"),
    Price = product.Field<decimal>("ListPrice")
});
0 голосов
/ 13 июня 2011

DataSet - это просто структурированный контейнер для результатов запроса, он не связан с источником данных (базой данных). Чтобы заполнить DataSet данными, вам необходимо использовать DataAdapter с SelectCommand и вызвать метод Fill .

var myConn = new SqlConnection ("..." );
var myAdapter = new SqlDataAdapter ( "SELECT * FROM TableName", myConn );
var myData = new testDataSet( );
myAdapter.Fill ( myData, "TableName" );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...