执行sql语句,不是反回的datatable和dataset吗,

chengmingwei11 2012-09-24 02:24:38
执行sql语句,不是反回的datatable和dataset吗?
为什么公司的程序,返回的是list,难道它在里面编写了datatable转换为list的方法了吗?本人菜鸟,勿喷
...全文
325 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
暖枫无敌 2012-09-24
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 的回复:]
引用 12 楼 的回复:
DataTable可以转换成实体类啊

举个简单的例子:


C# code


public class Person
{
public string Name {get;set;}
public int Age {get;set;}
}



执行SQL语句,返回一个DataSet后,遍历添加到集合中

C# code


……
[/Quote]
EF + LINT to Class 就是这样做的
ruanwei1987 2012-09-24
  • 打赏
  • 举报
回复
DataSet
SqlDataReader
种草德鲁伊 2012-09-24
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 的回复:]

其实,根据设计文档接口,连这也是多余的,
直接在需要呈现数据和提交更新的时候根据设计文档接口自动匹配就可以了

[/Quote]

自动匹配是没问题,但是你能匹配任何界面任何业务逻辑?你一直强调任何代码中都不会出现字段,那所谓的业务逻辑代码到底做了什么?
我觉得你的程序只是把sql management studio的打开表功能再实现了一遍。
qldsrx 2012-09-24
  • 打赏
  • 举报
回复
这个应该就是你要的:http://topic.csdn.net/u/20120412/10/42835527-3690-4775-a56e-b98426ada728.html

另外给你扫盲下,执行SQL是返回IDataReader,而不是DataTable,通过DataReader的读取才产生DataTable的
挨踢界小学生 2012-09-24
  • 打赏
  • 举报
回复
应该就是写了个转换的方法将dataset的每一条记录都转换为一个model层对象吧,你也可以自己写
缪军 2012-09-24
  • 打赏
  • 举报
回复
微软提供类型化数据集的开发手段,也就是所谓强类型的数据集,
而不是让程序员手工编写代码去转换
http://msdn.microsoft.com/zh-cn/library/wha85tzb(v=vs.100).aspx

其实,根据设计文档接口,连这也是多余的,
直接在需要呈现数据和提交更新的时候根据设计文档接口自动匹配就可以了
缪军 2012-09-24
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
执行sql语句,不是反回的datatable和dataset吗?
[/Quote]

[Quote=引用 10 楼 的回复:]
dbcommand有哪个方法执行以后返回datatable?
[/Quote]

楼主说的用Sql适配器或者OleDB适配器执行对应的SqlCommand或者OleDbCommand,隐式返回行集
chengmingwei11 2012-09-24
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 的回复:]
DataTable可以转换成实体类啊

举个简单的例子:


C# code


public class Person
{
public string Name {get;set;}
public int Age {get;set;}
}



执行SQL语句,返回一个DataSet后,遍历添加到集合中

C# code



publ……
[/Quote]大哥,这个我以前也写过,但是每写一个类,就写一次转换,我是想能不能直接弄个实体类型,把实体传过去,执行sql语句后,调用这个方法自动转换,直接返回list
暖枫无敌 2012-09-24
  • 打赏
  • 举报
回复
DataTable可以转换成实体类啊

举个简单的例子:


public class Person
{
public string Name {get;set;}
public int Age {get;set;}
}


执行SQL语句,返回一个DataSet后,遍历添加到集合中


public List<Person> getPersonEntities(DataSet personDS)
{
List<Person> list = new List<Person>();
if(personDS!=null&&personDS.Tables[0].Rows.Count>0)
{
foreach(DataRowView drv in personDS.Tables[0].DefaultView)
{
Person p = new Person();
p.Name = drv["Name"].ToString();
p.Age = int.Parse(drv["Age"].ToString());
list.Add(p);
}
}
return list;
}
chengmingwei11 2012-09-24
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]
引用 9 楼 的回复:

引用 7 楼 的回复:
从来没见过执行SQL命令会返回datatable
当你执行查询语句的时候,最后结果不是返回的datatable


dbcommand有哪个方法执行以后返回datatable?
[/Quote]大牛,我懂你的意思,我说的是执行我下面这个方法
public static DataTable GetDataSet(string sql)
{

DataSet ds = new DataSet();
SqlCommand cmd = new SqlCommand(sql, Connection);
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
return ds.Tables[0];
}如果返回list的话,是在这里面datatable转换为list的吗
种草德鲁伊 2012-09-24
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]

引用 7 楼 的回复:
从来没见过执行SQL命令会返回datatable
当你执行查询语句的时候,最后结果不是返回的datatable
[/Quote]

dbcommand有哪个方法执行以后返回datatable?
chengmingwei11 2012-09-24
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]
从来没见过执行SQL命令会返回datatable
[/Quote]当你执行查询语句的时候,最后结果不是返回的datatable
Randolfz 2012-09-24
  • 打赏
  • 举报
回复
想返回什么类型的是编写那块代码人的事,写什么类型那就返回什么类型,你不用你可以再转啊
种草德鲁伊 2012-09-24
  • 打赏
  • 举报
回复
从来没见过执行SQL命令会返回datatable
chengmingwei11 2012-09-24
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
一步步查看源代码(按F12),看看他怎么转的吧。
[/Quote]我也转了,最后转到 public virtual IDataReader ExecuteReader(DbCommand command);这个了,不懂这个的意思
我就是大神 2012-09-24
  • 打赏
  • 举报
回复
人家方法封装好了,比如DataTableToList(datatable dt){.......;return list;}
nyxuem 2012-09-24
  • 打赏
  • 举报
回复
一步步查看源代码(按F12),看看他怎么转的吧。
熙风 2012-09-24
  • 打赏
  • 举报
回复
既然你知道了返回的是List就就应该知道它是在哪里转的,怎么转的
kobelong 2012-09-24
  • 打赏
  • 举报
回复
估计你们公司又把SQL的查询方法封装了一套.
luhuiming741cs 2012-09-24
  • 打赏
  • 举报
回复
这个都是根据需要来设定,不一定非要返回DataTable或者DataTable
个人曾经写过的数据访问接口,包含:MSSQL、Mysql、Oracle等数据库的公共处理接口。可以拿过来直接使用,放在手里好多年了。 IDatabase接口声明如下: namespace Simple.Database { /// /// IDatabase 接口 /// public interface IDatabase { DbConnection dbConn { get; set; } /// /// 创建 DbConnection 对象实例。 /// /// DbConnection 对象实例。 DbConnection CreateConnection(); /// /// 创建 DbCommand 对象实例。 /// /// DbCommand 对象实例。 DbCommand CreateCommand(); /// /// 创建 DbCommand 对象实例。 /// /// Sql 语句或存储过程名。 /// CommandType 参数。 /// DbCommand 对象实例。 DbCommand CreateCommand(string text, CommandType type); /// /// 创建 DbCommand 对象实例。 /// /// Sql 语句或存储过程名。 /// CommandType 参数。 /// 参数集合。 /// DbCommand 对象实例。 DbCommand CreateCommand(string text, CommandType type, IDataParameter[] paras); /// /// 创建 DbCommand 对象实例。 /// /// DbConnection 对象。 /// Sql 语句或存储过程名。 /// CommandType 参数。 /// 参数集合。 /// DbCommand 对象实例。 DbCommand CreateCommand(DbConnection conn, string text, CommandType type, IDataParameter[] paras); /// /// 创建 DbDataAdapter 对象实例。 /// /// DbDataAdapter 对象实例。 DbDataAdapter CreateDataAdapter(); /// /// 创建 DbParameter 对象实例。 /// /// DbParameter 对象实例。 DbParameter CreateParameter(); /// /// 创建 DbParameter 对象实例。 /// /// 参数名称。 /// 参数值。 /// DbParameter 对象实例。 DbParameter CreateParameter(string name, Object value); /// /// 创建 DbParameter 对象实例。 /// /// 参数名称。 /// 参数类型。 /// DbParameter 对象实例。 DbParameter CreateParameter(string name, DbType type); /// /// 创建 DbParameter 对象实例。 /// /// 参数名称。 /// 参数类型。 /// 数据的最大大小。 /// DbParameter 对象实例。 DbParameter CreateParameter(string name, DbType type, int size); /// /// 获取指定长度数据的 DataSet 对象。 /// /// 要读取的 Sql 语句。 /// 开始读取位置的索引。 /// 待读取记录集的长度。 /// DataSet 对象。 DataSet GetDataSet(string sql, int start, int length); /// /// 获取指定长度数据的 DataTable 对象。 /// /// 要读取的 Sql 语句。 /// 开始读取位置的索引。 /// 待读取记录集的长度。 /// DataTable 对象。 DataTable GetDataTable(string sql, int start, int length); /// /// 执行Insert、Update、Delete等操作,并返回受影响的记录数。 /// /// 要执行的 Sql 语句。 /// 受影响的记录数。 int GetEffect(string sql); /// /// 执行 Insert、Update、Delete 等操作,并返回受影响的记录数。 /// /// 要执行的 Sql 语句或存储过程名等。 /// CommandType 的类型,即该命令是 Sql 语句,还是存储过程名等。 /// 受影响的记录数。 int GetEffect(string sql, CommandType type); /// /// 执行带参数的 Sql 语句或存储过程,并返回受影响的记录数。 /// /// 要执行的 Sql 语句或存储过程名等。 /// CommandType 参数类型,即该命令是 sql 语句,还是存储过程名等。 /// 参数集合。 /// 受影响的记录数。 int GetEffect(string text, CommandType type, IDataParameter[] paras); /// /// /// /// /// /// /// /// /// int GetEffect(DbConnection conn, string text, CommandType type, IDataParameter[] paras, DbTransaction DbTrans); /// /// /// /// /// List ExecuteTransaction(params string[] sqls); /// /// 执行 Select 语句,并返回 DataSet 对象。 /// /// 要执行的 Sql 语句。 /// DataSet 对象。 DataSet GetDataSet(string sql); /// /// 执行 Select 语句或存储过程,并返回 DataSet 对象。 /// /// 要执行的 Sql 语句或存储过程名等。 /// CommandType 参数类型,即该命令是 sql 语句,还是存储过程名等。 /// DataSet 对象。 DataSet GetDataSet(string text, CommandType type); /// /// 执行带参数的 Sql 语句或存储过程,并返回 DataSet 对象。 /// /// 要执行的 Sql 语句或存储过程名等。 /// CommandType 参数类型,即该命令是 sql 语句,还是存储过程名等。 /// 参数集合。 /// DataSet 对象。 DataSet GetDataSet(string text, CommandType type, IDataParameter[] paras); /// /// 执行 Select 语句,并返回 DataTable 对象。 /// /// 要执行的 Sql 语句。 /// DataTable 对象。 DataTable GetDataTable(string sql); /// /// 执行 Select 语句或存储过程,并返回 DataTable 对象。 /// /// 要执行的 Sql 语句或存储过程名等。 /// CommandType 参数类型,即该命令是 sql 语句,还是存储过程名等。 /// DataTable 对象。 DataTable GetDataTable(string text, CommandType type); /// /// 执行带参数的 Sql 语句或存储过程,并返回 DataTable 对象。 /// /// 要执行的 Sql 语句或存储过程名等。 /// CommandType 参数类型,即该命令是 sql 语句,还是存储过程名等。 /// 参数集合。 /// DataTable 对象。 DataTable GetDataTable(string text, CommandType type, IDataParameter[] paras); /// /// 获取查询所返回的结果集中第一行第一列的值。 /// /// 要处理的 sql 语句(包含待查询的字段)。 /// 字段值。 object GetField(string sql); /// /// 获取查询所返回的结果集中第一行指定列的值。 /// /// 待查询的数据表名称。 /// 待获取字段的列名。 /// 字段值。 object GetField(string sql, string field); /// /// 获取查询所返回的结果集中第一行指定列集合的值。 /// /// 要处理的 sql 语句。 /// 待获取字段的列表。 /// 字段值集合。 object[] GetField(string sql, params string[] fields); } }

110,585

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧