2:OleDbConnection与 OracleConnection 不是指向同一个Oracle吗?为什么要两个类呢?
3:存储过程到底是写在数据库设计的时候还是写在代码调用的时候??其中SET NOCOUNT OFF 指的 是什么??
4:调用存储过程的中,UpdatedRowSource是干什么的??
8 个解决方案
#1
1 MSDN里面已经说的很清楚了:
The SqlDataAdapter does not automatically generate the Transact-SQL statements required to reconcile changes made to a DataSet with the associated instance of SQL Server. However, you can create a SqlCommandBuilder object to automatically generate Transact-SQL statements for single-table updates if you set the SelectCommand property of the SqlDataAdapter. Then, any additional Transact-SQL statements that you do not set are generated by the SqlCommandBuilder.
2 这两个连接类对应的数据库是不一样的
OleDbConneciton 对应的是OleDb类型的,比如Access
OracleConnection 是用来连接ORACLE数据库的
除了这两个还有两种:ODBCConnection,SqlConnection.分别连接ODBC数据源和SQL SERVER数据库
PS:在VS2005以后你不用考虑这么多了,只要用一个DBConnection来连接就可以了。类型可以由数据工厂自动生成
3 存储过程是写在数据库里面的,我们在代码里调用存储过程的方法名
当SET NOCOUNT 为ON 时,不返回计数(表示受Transact-SQL 语句影响的行数)。当SET NOCOUNT 为OFF 时,返回计数。 即使当SET NOCOUNT 为ON 时,也更新@@ROWCOUNT 函数。 当SET NOCOUNT 为ON 时,将不给客户端发送存储过程中的每个语句的DONE_IN_PROC 信息
4 也可以看MSDN, 获取或设置命令结果在由 DbDataAdapter 的 Update 方法使用时如何应用于 DataRow。默认的 UpdateRowSource 值为 Both,除非自动生成该命令(如 SqlCommandBuilder 这样的情况),这时默认值为 None。
The SqlDataAdapter does not automatically generate the Transact-SQL statements required to reconcile changes made to a DataSet with the associated instance of SQL Server. However, you can create a SqlCommandBuilder object to automatically generate Transact-SQL statements for single-table updates if you set the SelectCommand property of the SqlDataAdapter. Then, any additional Transact-SQL statements that you do not set are generated by the SqlCommandBuilder.
2 这两个连接类对应的数据库是不一样的
OleDbConneciton 对应的是OleDb类型的,比如Access
OracleConnection 是用来连接ORACLE数据库的
除了这两个还有两种:ODBCConnection,SqlConnection.分别连接ODBC数据源和SQL SERVER数据库
PS:在VS2005以后你不用考虑这么多了,只要用一个DBConnection来连接就可以了。类型可以由数据工厂自动生成
3 存储过程是写在数据库里面的,我们在代码里调用存储过程的方法名
当SET NOCOUNT 为ON 时,不返回计数(表示受Transact-SQL 语句影响的行数)。当SET NOCOUNT 为OFF 时,返回计数。 即使当SET NOCOUNT 为ON 时,也更新@@ROWCOUNT 函数。 当SET NOCOUNT 为ON 时,将不给客户端发送存储过程中的每个语句的DONE_IN_PROC 信息
4 也可以看MSDN, 获取或设置命令结果在由 DbDataAdapter 的 Update 方法使用时如何应用于 DataRow。默认的 UpdateRowSource 值为 Both,除非自动生成该命令(如 SqlCommandBuilder 这样的情况),这时默认值为 None。
#2
楼上,说的还是比较清楚
msdn是最好的学习伙伴
msdn是最好的学习伙伴
#3
1.这个楼主不应该搞混,完全不同的作用
2.OleDbConnection与 OracleConnection 适用不同的范围,当使用oracle时推荐使用OracleConnection ,从字面也能看出
3.存储过程在什么时候写?什么时候好像无所谓吧,总之它数据库中的一个对象
SET NOCOUNT OFF表示返回数据库表中受影响的行数
2.OleDbConnection与 OracleConnection 适用不同的范围,当使用oracle时推荐使用OracleConnection ,从字面也能看出
3.存储过程在什么时候写?什么时候好像无所谓吧,总之它数据库中的一个对象
SET NOCOUNT OFF表示返回数据库表中受影响的行数
#4
1)SqlCommandBuilder是SqlCommand的工厂类,他可以根据SelectCommand这个原料,生成InsertCommand,UpdateCommand,DeleteComand,工厂类的好处就是你给个简单的原料,他在内部会给你动态的生成成品。这个成品可能和你的原料大相径庭
2)OleDB是数据访问的通用接口,他可以访问Access,Sql,Oracle,sysbase等等常用数据库,他实现的也是一个工厂类的功能,但是因为每个数据库都有自己的数据访问接口,那么OleDB要想访问到这些数据库,就必须和这些接口打交道,让用户觉得你是在透明的访问数据库,但是你的访问是经过了OleDb的处理和封装,也就是说真正数据库访问接口是一个层次,而OleDb是在其上面的一个包装层,他通用,但是层次过多,效率不好。如果你知道你就是用Sql,那么你可以直接使用SqlClient来访问Sql数据库,这样性能比较高 。Oracle同理可证
3)表示存储过程执行结果中包括影响到的行数
4)
2)OleDB是数据访问的通用接口,他可以访问Access,Sql,Oracle,sysbase等等常用数据库,他实现的也是一个工厂类的功能,但是因为每个数据库都有自己的数据访问接口,那么OleDB要想访问到这些数据库,就必须和这些接口打交道,让用户觉得你是在透明的访问数据库,但是你的访问是经过了OleDb的处理和封装,也就是说真正数据库访问接口是一个层次,而OleDb是在其上面的一个包装层,他通用,但是层次过多,效率不好。如果你知道你就是用Sql,那么你可以直接使用SqlClient来访问Sql数据库,这样性能比较高 。Oracle同理可证
3)表示存储过程执行结果中包括影响到的行数
4)
#5
学习,这些东东msdn上应该都可以查到的
#6
谢谢,问题已经清楚了
#7
结贴
#8
带上我一个
#1
1 MSDN里面已经说的很清楚了:
The SqlDataAdapter does not automatically generate the Transact-SQL statements required to reconcile changes made to a DataSet with the associated instance of SQL Server. However, you can create a SqlCommandBuilder object to automatically generate Transact-SQL statements for single-table updates if you set the SelectCommand property of the SqlDataAdapter. Then, any additional Transact-SQL statements that you do not set are generated by the SqlCommandBuilder.
2 这两个连接类对应的数据库是不一样的
OleDbConneciton 对应的是OleDb类型的,比如Access
OracleConnection 是用来连接ORACLE数据库的
除了这两个还有两种:ODBCConnection,SqlConnection.分别连接ODBC数据源和SQL SERVER数据库
PS:在VS2005以后你不用考虑这么多了,只要用一个DBConnection来连接就可以了。类型可以由数据工厂自动生成
3 存储过程是写在数据库里面的,我们在代码里调用存储过程的方法名
当SET NOCOUNT 为ON 时,不返回计数(表示受Transact-SQL 语句影响的行数)。当SET NOCOUNT 为OFF 时,返回计数。 即使当SET NOCOUNT 为ON 时,也更新@@ROWCOUNT 函数。 当SET NOCOUNT 为ON 时,将不给客户端发送存储过程中的每个语句的DONE_IN_PROC 信息
4 也可以看MSDN, 获取或设置命令结果在由 DbDataAdapter 的 Update 方法使用时如何应用于 DataRow。默认的 UpdateRowSource 值为 Both,除非自动生成该命令(如 SqlCommandBuilder 这样的情况),这时默认值为 None。
The SqlDataAdapter does not automatically generate the Transact-SQL statements required to reconcile changes made to a DataSet with the associated instance of SQL Server. However, you can create a SqlCommandBuilder object to automatically generate Transact-SQL statements for single-table updates if you set the SelectCommand property of the SqlDataAdapter. Then, any additional Transact-SQL statements that you do not set are generated by the SqlCommandBuilder.
2 这两个连接类对应的数据库是不一样的
OleDbConneciton 对应的是OleDb类型的,比如Access
OracleConnection 是用来连接ORACLE数据库的
除了这两个还有两种:ODBCConnection,SqlConnection.分别连接ODBC数据源和SQL SERVER数据库
PS:在VS2005以后你不用考虑这么多了,只要用一个DBConnection来连接就可以了。类型可以由数据工厂自动生成
3 存储过程是写在数据库里面的,我们在代码里调用存储过程的方法名
当SET NOCOUNT 为ON 时,不返回计数(表示受Transact-SQL 语句影响的行数)。当SET NOCOUNT 为OFF 时,返回计数。 即使当SET NOCOUNT 为ON 时,也更新@@ROWCOUNT 函数。 当SET NOCOUNT 为ON 时,将不给客户端发送存储过程中的每个语句的DONE_IN_PROC 信息
4 也可以看MSDN, 获取或设置命令结果在由 DbDataAdapter 的 Update 方法使用时如何应用于 DataRow。默认的 UpdateRowSource 值为 Both,除非自动生成该命令(如 SqlCommandBuilder 这样的情况),这时默认值为 None。
#2
楼上,说的还是比较清楚
msdn是最好的学习伙伴
msdn是最好的学习伙伴
#3
1.这个楼主不应该搞混,完全不同的作用
2.OleDbConnection与 OracleConnection 适用不同的范围,当使用oracle时推荐使用OracleConnection ,从字面也能看出
3.存储过程在什么时候写?什么时候好像无所谓吧,总之它数据库中的一个对象
SET NOCOUNT OFF表示返回数据库表中受影响的行数
2.OleDbConnection与 OracleConnection 适用不同的范围,当使用oracle时推荐使用OracleConnection ,从字面也能看出
3.存储过程在什么时候写?什么时候好像无所谓吧,总之它数据库中的一个对象
SET NOCOUNT OFF表示返回数据库表中受影响的行数
#4
1)SqlCommandBuilder是SqlCommand的工厂类,他可以根据SelectCommand这个原料,生成InsertCommand,UpdateCommand,DeleteComand,工厂类的好处就是你给个简单的原料,他在内部会给你动态的生成成品。这个成品可能和你的原料大相径庭
2)OleDB是数据访问的通用接口,他可以访问Access,Sql,Oracle,sysbase等等常用数据库,他实现的也是一个工厂类的功能,但是因为每个数据库都有自己的数据访问接口,那么OleDB要想访问到这些数据库,就必须和这些接口打交道,让用户觉得你是在透明的访问数据库,但是你的访问是经过了OleDb的处理和封装,也就是说真正数据库访问接口是一个层次,而OleDb是在其上面的一个包装层,他通用,但是层次过多,效率不好。如果你知道你就是用Sql,那么你可以直接使用SqlClient来访问Sql数据库,这样性能比较高 。Oracle同理可证
3)表示存储过程执行结果中包括影响到的行数
4)
2)OleDB是数据访问的通用接口,他可以访问Access,Sql,Oracle,sysbase等等常用数据库,他实现的也是一个工厂类的功能,但是因为每个数据库都有自己的数据访问接口,那么OleDB要想访问到这些数据库,就必须和这些接口打交道,让用户觉得你是在透明的访问数据库,但是你的访问是经过了OleDb的处理和封装,也就是说真正数据库访问接口是一个层次,而OleDb是在其上面的一个包装层,他通用,但是层次过多,效率不好。如果你知道你就是用Sql,那么你可以直接使用SqlClient来访问Sql数据库,这样性能比较高 。Oracle同理可证
3)表示存储过程执行结果中包括影响到的行数
4)
#5
学习,这些东东msdn上应该都可以查到的
#6
谢谢,问题已经清楚了
#7
结贴
#8
带上我一个