为什么我使用DB生成的代码获得空结果?

时间:2011-06-13 11:26:02

标签: c# sql-server sql-server-2005

我正在使用SQL Server 2005.我有一个包含6行和列的表scores - name, scoreid

我在VS中添加了数据源,并生成了一个名为testDataSet的数据集。

所以我尝试了以下代码,结果为零:

testDataSet db = new testDataSet();

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

问题出在哪里?

4 个答案:

答案 0 :(得分:1)

您遇到的问题是您正在查询空DataSet

首先必须创建与testDataSet的连接,并使用数据库中的数据填充其中包含的表。

如果您使用VS提供的自动工具创建了testDataSet,那么该工具还会创建相关的TableDataAdapters(在他们自己的命名空间中)来填充和更新您的DataSet。< / p>

初始化相关TableDataAdapter并使用Fill(db)方法从数据库中获取数据。

答案 1 :(得分:0)

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" );

答案 2 :(得分:0)

你应该像这样查询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")
});

答案 3 :(得分:0)

请尝试使用此代码:

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

其他人是正确的,你的问题是你没有查询数据。生成数据集时,还会为您生成适配器,这将帮助您查询数据,如上所示。