C#操作数据库(增/删/改)共有几种方法?

时间:2021-11-27 08:20:28
我对C#的了解并不深入,在此恳请各位路过的高手们赐教.

据我的了解可以用: DataAdpter, Command,DataSet,还有一种Paramters.Add的方法. 其实我真没搞清楚究竟有哪方法?

12 个解决方案

#1


其实你已经说啦。
1.通过DataAdpter,DataSet来批处理更新
2.通过Command来用Sql语句更新,update .....
3.通过Command调用存储过程更新

上面,Command就有可能要Paramters.Add...了。。。

#2


主要还是通过SQL语句

操作SQL语句的主要类还是 Command类

Command.ExecuteNonQuery() 执行一个没有返回值得SQL语句 
如设置Command.CommandText="Update xxx SET dd=dd",或者“Delete xx From xx”之类的语句

Command.ExecuteReader() 执行有返回的SQL 
像一个游标一样 一行一行读


DataAdpter的主要方法是Fill
一般是 “Select * FROM xx”
返回一个数据集 
DataAapter也有Update方法 但是较少使用
DataAdapter算是批处理操作吧 1.x下应该还是一行一行处理 只是用户看不见而以

#3


1、自己构造sql语句,如  insert into A(**,**) values(**,**),再用SqlCommand.ExecuteNonQuery来对数据库进行操作。

2、通过SqlCommandBuilder来构建sql语句,DataAdapter.Update方法其实也是以此为基础。
这种方法,要求待操作的表必须有主键,不然不能对其Update/Delete/操作。

3、自己构建带Paramter的sql语句,包括两种:一种是SqlCommand有CommandText来构成,另一种就是用存储过程。

#4


ref:
http://blog.csdn.net/knight94/archive/2006/04/15/664530.aspx

#5


都说完了
jf

#6


CommandBuilder 与 sqlCommand 的区别是什么呢?

#7


我一共只有100分,不好意思.大家这么热情,真想给每人100分.真心感谢!

#8


mark

#9


再次谢谢你们,对我的帮助很大。
特别是Knight94(愚翁) 那篇,写得很详细,还有例子。

#10


我最近也在做 c#连接数据库。。新手,看了很多例子,感觉也很迷惑。。借楼主宝地来学习一下。

#11


A.SQL指令

                         i.              检查SQL的输入,并使用参数,直接使用字符连接容易遭受注入式攻击。

                       ii.              仅返回需要的行和例

                      iii.              对大的数据集使用分页功能

                     iv.              批次执行SQL,避免多次往返。

                       v.              如果没有数据返回则使用ExecuteNonQuery方法

                     vi.              当返回一个标量时,使用ExecuteScalar方法

                    vii.              不要在运行时间使用CommandBuilder,尽管很省事,但是开销很大。

B.存储过程

                         i.              尽量使用存储过程

                       ii.              对于OleDbCommand,指令类型为CommandType.Text

                      iii.              使用SqlCommand,指令类型为CommandType.StoredProcedure

                     iv.              尽可能使用输出参数

                       v.              考虑在SQL Server中SET NOCOUNT ON,即关闭SQL Server的记数功能。

#12


标记,学习。

#1


其实你已经说啦。
1.通过DataAdpter,DataSet来批处理更新
2.通过Command来用Sql语句更新,update .....
3.通过Command调用存储过程更新

上面,Command就有可能要Paramters.Add...了。。。

#2


主要还是通过SQL语句

操作SQL语句的主要类还是 Command类

Command.ExecuteNonQuery() 执行一个没有返回值得SQL语句 
如设置Command.CommandText="Update xxx SET dd=dd",或者“Delete xx From xx”之类的语句

Command.ExecuteReader() 执行有返回的SQL 
像一个游标一样 一行一行读


DataAdpter的主要方法是Fill
一般是 “Select * FROM xx”
返回一个数据集 
DataAapter也有Update方法 但是较少使用
DataAdapter算是批处理操作吧 1.x下应该还是一行一行处理 只是用户看不见而以

#3


1、自己构造sql语句,如  insert into A(**,**) values(**,**),再用SqlCommand.ExecuteNonQuery来对数据库进行操作。

2、通过SqlCommandBuilder来构建sql语句,DataAdapter.Update方法其实也是以此为基础。
这种方法,要求待操作的表必须有主键,不然不能对其Update/Delete/操作。

3、自己构建带Paramter的sql语句,包括两种:一种是SqlCommand有CommandText来构成,另一种就是用存储过程。

#4


ref:
http://blog.csdn.net/knight94/archive/2006/04/15/664530.aspx

#5


都说完了
jf

#6


CommandBuilder 与 sqlCommand 的区别是什么呢?

#7


我一共只有100分,不好意思.大家这么热情,真想给每人100分.真心感谢!

#8


mark

#9


再次谢谢你们,对我的帮助很大。
特别是Knight94(愚翁) 那篇,写得很详细,还有例子。

#10


我最近也在做 c#连接数据库。。新手,看了很多例子,感觉也很迷惑。。借楼主宝地来学习一下。

#11


A.SQL指令

                         i.              检查SQL的输入,并使用参数,直接使用字符连接容易遭受注入式攻击。

                       ii.              仅返回需要的行和例

                      iii.              对大的数据集使用分页功能

                     iv.              批次执行SQL,避免多次往返。

                       v.              如果没有数据返回则使用ExecuteNonQuery方法

                     vi.              当返回一个标量时,使用ExecuteScalar方法

                    vii.              不要在运行时间使用CommandBuilder,尽管很省事,但是开销很大。

B.存储过程

                         i.              尽量使用存储过程

                       ii.              对于OleDbCommand,指令类型为CommandType.Text

                      iii.              使用SqlCommand,指令类型为CommandType.StoredProcedure

                     iv.              尽可能使用输出参数

                       v.              考虑在SQL Server中SET NOCOUNT ON,即关闭SQL Server的记数功能。

#12


标记,学习。