GBASE南大通用GBaseCommandBuilder 类

发布时间:2024年01月11日

自动生成单表命令,当使用 GBASE南大通用DataSet 对象的方法将变更的内容写回到对应数据库时,需使用GBASE南大通用 GBaseCommandBuilder 进行协调关联。无法继承此类。

对于该类所有成员的列表,参考 GBaseCommandBuilder 成员。

一、继承层次

System.Object

|__ System.MarshalByRefObject

|__ System.ComponentModel.Component

|__ System.Data.Common.DbCommandBuilder

|__GBase.Data.GBaseClient.GbaseCommandBuilder

? 语法

[ Visual Basic ]

Public NotInheritable Class GBaseCommandBuilder _

Inherits DbCommandBuilder

[ C# ]

public sealed class GBaseCommandBuilder : DbCommandBuilder

? 必要条件

命名空间:GBase.Data.GBaseClient

? 线程安全性

这个类型的公共静态成员(在 Visual Basic 中为 Shared)对于多线程操作是保证线程安全的,对于实例不保证线程安全性。

? 注释

GBaseDataAdapter 不会自动生成与 DataSet 的变更相一致的 SQL 语句,必须使用 GBaseCommandBuilder 关联。要生成 INSERT、UPDATE 或 DELETE 语句时,需要用到 GBaseDataAdapter 的 SelectCommand 属性自动返回需要的元数据集。

SelectCommand 必须返回至少一个主键或者唯一列,如果没有返回,在生成更新语句时就会出现 InvalidOperation 异常,且命令不会生成。

GBaseCommandBuilder 还使用 SelectCommand 引用的 Connection、

CommandTimeout 和 Transaction 属性。如果这些属性改变了,用户应该调用RefreshSchema。否则 InsertCommand、UpdateCommand 和 DeleteCommand 属性会保持它们原先的值。

如果用户调用了 GBaseCommandBuilder 的 Dispose 方法后,GBaseCommandBuilder 会从 GBaseDataAdapter 断开,且不能再用于生成命令。

用户无论何时设置 GBaseDataAdapter 属性,GBaseCommandBuilder 都会把自己注册为 OnRowUpdating 事件的监听器。

? 示例

下面的例子演示了如何创建 GBaseCommandBuilder。

[Visual Basic]

Public Shared Function SelectRows(gsConnection As String,_

gsSelectQuery As String, gsTableName As String)_

As DataSet

Dim gsConn As New GBaseConnection(gsConnection)

Dim gsDataAdapter As New GBaseDataAdapter()

gsDataAdapter.SelectCommand = New GBaseCommand(gsSelectQuery,_

gsConn)

Dim cb As GBaseSqlCommandBuilder = New GbaseCommandBuilder_

(gsDataAdapter)

gsConn.Open()

Dim ds As DataSet = New DataSet

gsDataAdapter.Fill(ds, gsTableName)

' Code to modify data in DataSet here

' Without the GBaseCommandBuilder this line would fail.

gsDataAdapter.Update(ds, gsTableName)

gsConn.Close()

End Function 'SelectRows

[C#]

Public Static DataSet SelectRows(string gsConnection, string

gsSelectQuery,

string gsTableName)

{

GBaseConnection gsConn = new GBaseConnection(gsConnection);

GBaseDataAdapter gsDataAdapter = new GBaseDataAdapter();

gsDataAdapter.SelectCommand = new GBaseCommand(gsSelectQuery,

gsConn);

GBaseCommandBuilder cb = new

GBaseCommandBuilder(gsDataAdapter);

gsConn.Open();

DataSet ds = new DataSet();

gsDataAdapter.Fill(ds, gsTableName);

//code to modify data in DataSet here

//Without the GBaseCommandBuilder this line would fail

gsDataAdapter.Update(ds, gsTableName);

gsConn.Close();

return ds;

}

文章来源:https://blog.csdn.net/weixin_47390342/article/details/135534608
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。