请问OleDbDataAdapter为啥可以执行 update语句?

剑农 2019-01-17 01:16:26
我用下面代码 居然可以执行update语句 为什么 不是只能select吗?
还有我注释掉的那行代码 可以注释掉吗?我测试是可以的。
OleDbCommandBuilder cb = new OleDbCommandBuilder(da);

请大佬指教啊


public DataTable GetData(String strSQL)
{
OleDbConnection conn = new OleDbConnection();
DataSet ds = new DataSet();
try
{
conn = new OleDbConnection(Myfunction.DBconn());
OleDbDataAdapter da = new OleDbDataAdapter(strSQL, conn);
//OleDbCommandBuilder cb = new OleDbCommandBuilder(da);

da.Fill(ds, "table");

return ds.Tables["table"];
}
finally
{
conn.Close();

}

...全文
196 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
剑农 2019-01-17
  • 打赏
  • 举报
回复
引用 11 楼 likelinsiyuan 的回复:
这种问题一般是代码有问题,范围有点广,不太好找,而且我上班的地方qq和微信都被限制了
好的 感谢啦。。。。没事。。
  • 打赏
  • 举报
回复
这种问题一般是代码有问题,范围有点广,不太好找,而且我上班的地方qq和微信都被限制了
剑农 2019-01-17
  • 打赏
  • 举报
回复
引用 8 楼 likelinsiyuan 的回复:
这只是普通的数据库连接,不会造成死锁。要造成死锁也是写的sql语句有问题。 并没有说一定要你去改变DataSet的数据 只是说,DataSet可以看成一个小型"数据库",里面有表有数据,当然也可以修改 然后DataAdapter中提供了方法让你将修改后的DataSet同步回数据库。 当然你也可以就用sql语句来修改数据库的数据,当然没问题。
方便的话 加下我QQ414522115
剑农 2019-01-17
  • 打赏
  • 举报
回复
引用 8 楼 likelinsiyuan 的回复:
这只是普通的数据库连接,不会造成死锁。要造成死锁也是写的sql语句有问题。 并没有说一定要你去改变DataSet的数据 只是说,DataSet可以看成一个小型"数据库",里面有表有数据,当然也可以修改 然后DataAdapter中提供了方法让你将修改后的DataSet同步回数据库。 当然你也可以就用sql语句来修改数据库的数据,当然没问题。
谢谢 IIS程序池假死的问题 我再看看。。 iis日志一直报 Connection_Dropped 然后就Connection_Abandoned_By_ReqQueue 网站前台显示所有ajax取数据取不了 然后网站一直转圈打不开了
  • 打赏
  • 举报
回复
这只是普通的数据库连接,不会造成死锁。要造成死锁也是写的sql语句有问题。

并没有说一定要你去改变DataSet的数据

只是说,DataSet可以看成一个小型"数据库",里面有表有数据,当然也可以修改
然后DataAdapter中提供了方法让你将修改后的DataSet同步回数据库。

当然你也可以就用sql语句来修改数据库的数据,当然没问题。
剑农 2019-01-17
  • 打赏
  • 举报
回复
引用 6 楼 likelinsiyuan 的回复:
[quote=引用 4 楼 剑农 的回复:] [quote=引用 3 楼 likelinsiyuan 的回复:] [quote=引用 2 楼 剑农 的回复:] [quote=引用 1 楼 likelinsiyuan 的回复:] 本来就没有规定DataAdapter只能执行select语句吧, DataAdapter和Command主要区别在于返回的结果。 DataAdapter内部其实也是使用了Command,只不过会将结果填充到DataSet中方便用户操作数据。 所以当我们一般不需要操作结果时,比如执行更新删除操作就使用Command,效率会高些。
只是效率的问题吗?谢谢 OleDbCommandBuilder cb = new OleDbCommandBuilder(da); 我这句可以注释掉 不影响吧? [/quote] 如果你不需要操作DataSet中的数据(比如增删改),那么注释掉没有影响 [/quote] 我注释掉 测试了下 还是可以改啊。。。。[/quote] OleDbCommandBuilder不影响你要执行的sql语句, 我上面说的是你不改变DataSet中的数据,那这句代码注释就没有影响[/quote] 不太明白呢 什么情况下 我会去改变已经获取到的数据? 一般不是直接返回了吗
  • 打赏
  • 举报
回复
引用 4 楼 剑农 的回复:
[quote=引用 3 楼 likelinsiyuan 的回复:]
[quote=引用 2 楼 剑农 的回复:]
[quote=引用 1 楼 likelinsiyuan 的回复:]
本来就没有规定DataAdapter只能执行select语句吧,
DataAdapter和Command主要区别在于返回的结果。
DataAdapter内部其实也是使用了Command,只不过会将结果填充到DataSet中方便用户操作数据。
所以当我们一般不需要操作结果时,比如执行更新删除操作就使用Command,效率会高些。

只是效率的问题吗?谢谢
OleDbCommandBuilder cb = new OleDbCommandBuilder(da);
我这句可以注释掉 不影响吧?
[/quote]
如果你不需要操作DataSet中的数据(比如增删改),那么注释掉没有影响
[/quote]
我注释掉 测试了下 还是可以改啊。。。。[/quote]
OleDbCommandBuilder不影响你要执行的sql语句,
我上面说的是你不改变DataSet中的数据,那这句代码注释就没有影响
剑农 2019-01-17
  • 打赏
  • 举报
回复
引用 3 楼 likelinsiyuan 的回复:
[quote=引用 2 楼 剑农 的回复:] [quote=引用 1 楼 likelinsiyuan 的回复:] 本来就没有规定DataAdapter只能执行select语句吧, DataAdapter和Command主要区别在于返回的结果。 DataAdapter内部其实也是使用了Command,只不过会将结果填充到DataSet中方便用户操作数据。 所以当我们一般不需要操作结果时,比如执行更新删除操作就使用Command,效率会高些。
只是效率的问题吗?谢谢 OleDbCommandBuilder cb = new OleDbCommandBuilder(da); 我这句可以注释掉 不影响吧? [/quote] 如果你不需要操作DataSet中的数据(比如增删改),那么注释掉没有影响 [/quote] 我这个写法不会导致死锁吧 最近网站老是程序池挂掉
剑农 2019-01-17
  • 打赏
  • 举报
回复
引用 3 楼 likelinsiyuan 的回复:
[quote=引用 2 楼 剑农 的回复:] [quote=引用 1 楼 likelinsiyuan 的回复:] 本来就没有规定DataAdapter只能执行select语句吧, DataAdapter和Command主要区别在于返回的结果。 DataAdapter内部其实也是使用了Command,只不过会将结果填充到DataSet中方便用户操作数据。 所以当我们一般不需要操作结果时,比如执行更新删除操作就使用Command,效率会高些。
只是效率的问题吗?谢谢 OleDbCommandBuilder cb = new OleDbCommandBuilder(da); 我这句可以注释掉 不影响吧? [/quote] 如果你不需要操作DataSet中的数据(比如增删改),那么注释掉没有影响 [/quote] 我注释掉 测试了下 还是可以改啊。。。。
  • 打赏
  • 举报
回复
引用 2 楼 剑农 的回复:
[quote=引用 1 楼 likelinsiyuan 的回复:]
本来就没有规定DataAdapter只能执行select语句吧,
DataAdapter和Command主要区别在于返回的结果。
DataAdapter内部其实也是使用了Command,只不过会将结果填充到DataSet中方便用户操作数据。
所以当我们一般不需要操作结果时,比如执行更新删除操作就使用Command,效率会高些。

只是效率的问题吗?谢谢
OleDbCommandBuilder cb = new OleDbCommandBuilder(da);
我这句可以注释掉 不影响吧?
[/quote]
如果你不需要操作DataSet中的数据(比如增删改),那么注释掉没有影响
剑农 2019-01-17
  • 打赏
  • 举报
回复
引用 1 楼 likelinsiyuan 的回复:
本来就没有规定DataAdapter只能执行select语句吧, DataAdapter和Command主要区别在于返回的结果。 DataAdapter内部其实也是使用了Command,只不过会将结果填充到DataSet中方便用户操作数据。 所以当我们一般不需要操作结果时,比如执行更新删除操作就使用Command,效率会高些。
只是效率的问题吗?谢谢 OleDbCommandBuilder cb = new OleDbCommandBuilder(da); 我这句可以注释掉 不影响吧?
  • 打赏
  • 举报
回复
本来就没有规定DataAdapter只能执行select语句吧,
DataAdapter和Command主要区别在于返回的结果。
DataAdapter内部其实也是使用了Command,只不过会将结果填充到DataSet中方便用户操作数据。
所以当我们一般不需要操作结果时,比如执行更新删除操作就使用Command,效率会高些。

110,534

社区成员

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

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

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