我正在使用SQL Server 2005.我有一个包含6行和列的表scores
- name, score
和id
。
我在VS中添加了数据源,并生成了一个名为testDataSet
的数据集。
所以我尝试了以下代码,结果为零:
testDataSet db = new testDataSet();
var result = from row in db.scores
select row.name;
问题出在哪里?
答案 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;
其他人是正确的,你的问题是你没有查询数据。生成数据集时,还会为您生成适配器,这将帮助您查询数据,如上所示。