关于C#中DataSet使用疑问??

在C#中定义如下这么一个关于DataSet的方法,代码如下:
using System.Data.SqlClient;
……
public static DataSet ExcuteDataSet(string sql)
{
SqlConnection conn=new SqlConnection("server=SQLEXPRESS;database=student;uid=sa;pwd=123");
SqlDataAdapter adpater=new SqlDataAdapter(sql,conn);
DataSet dSet = new DataSet();
adpater.Fill(dSet);
return dSet;

}

当在F6自检时报出以下错误信息:
错误 2 参数 1: 无法从“_04_DataSet.DataSet”转换为“System.Data.DataTable” D:\DataSet\SqlHelper.cs 17 22 04 DataSet
错误 4 参数 2: 无法从“string”转换为“System.Data.SqlClient.SqlCredential” D:\DataSet\Form1.cs 36 75 04 DataSet
错误 1 与“System.Data.Common.DbDataAdapter.Fill(System.Data.DataTable)”最匹配的重载方法具有一些无效参数 D:\DataSet\SqlHelper.cs 17 9 04 DataSet
错误 3 与“System.Data.SqlClient.SqlConnection.SqlConnection(string, System.Data.SqlClient.SqlCredential)”最匹配的重载方法具有一些无效参数 D:\DataSet\Form1.cs 36 34 04 DataSet

由于本人初学C#,前来请教高手,问题出在哪?谢谢回答

楼主主要要明白概念,DataSet、DataTable、DataRowCollection、DataRow分别是什么?
简单理解,它们分别是以下这些:
DataSet 数据库,存放多张表
DataTable 数据表,存放多个行
DataRowCollection 数据列集合,简单点理解就是由多个列组成的一行
DataRow 单列单行,即单元格

从你的代码上看,你应该是要获取数据表,而方法返回值是DataSet类型即数据库,你要获取一个表应该是DataSet.Table[index],index即第几张表,一般说来你的SQL查询返回的是一张表,因此你要获取数据只需要DataSet.Table[0]

数据结构要先理解清楚它们的层级关系,对你以后的任何开发都非常有帮助:
多个单元格组成一行-》多行组成一表-》多表组成一库-》多库组成一实例-》多实例组成一服务器-》多服务器组成一群组-》多群组组成一机房-》多机房组成数据中心……

遵循数据可无限放大和无限缩小原则,大家都知道计算机数据是由0和1组成,由道家阴阳发展二来,因而一生二,二生三,三生万物。他们是继承原有属性,衍生自己的特性的关系。太极生两仪,太极即无穷小,反之则为无极,即无限大。

如何处理它们之间的关系在于你当前所面对的是什么对象,那么你就能找出它继承的是什么,能衍生什么。你会发现任何数据都可以加一个List或者组成数组,如:你把单元格当成是一个字符串,那么多个字符串组成一个字符串数组,多个字符串数组组成二维数组,多个二维数组组成三维数组,因而它是无穷大的。

无论是什么数据,单条语句也好,单元格也好,字符串,整数也好,它们都可以组成自己的集合生成一个新对象。语句-》方法-》类-》类库-》项目-》解决方案。无不遵循继承和衍生的规则。

如果你明白了这些,对数据开发你就能很清楚你当前面对的是什么对象,然后要找到它的子对象就一定有对应的方法来得到它。
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-01-12
上述代码经过测试可以正确运行,错误消息肯定是其他地方造成的,可以留联系看。本回答被提问者采纳
第2个回答  2014-01-12
你的错误不在此处 应该是其他的函数 该函数是返回DataTable的函数
第3个回答  2014-01-12
你得调用open方法啊!追问

SqlDataAdapter是不需要OPEN的

追答

conn.open();

第4个回答  2014-01-12
还是基础知识吧。希望多学习一些基础的东西吧。
相似回答