Idataadapter和insertcommand [英] Idataadapter and insertcommand

查看:104
本文介绍了Idataadapter和insertcommand的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个抽象类,它定义了几个方法来处理数据库连接。我还有几个使用它的类,例如一个用于SQL CE,另一个用于通用的OleDb连接类型。

因此,通过抽象类定义以下方法:



Hi, I've an abstract class which define several methods in order to handle db connetions. I've also a couple of class which use it, for example one for SQL CE and another one for generic OleDb connection type.
So, by abstract class define the following method:

public abstract IDbDataAdapter GetAdapter(string sql);





派生类cDbOle覆盖方法如下:





And the derived class cDbOle override that method as follow:

public override IDbDataAdapter GetAdapter(string sql)
	{
		if (!ConnectionOpen())
			return null;

		OleDbCommand cmd = new OleDbCommand(sql, (OleDbConnection)Cnn);

		cmd.CommandType = CommandType.Text;
		if (_trans != null)
			cmd.Transaction = (OleDbTransaction)_trans;
		OleDbDataAdapter da = new OleDbDataAdapter(cmd);
		using (OleDbCommandBuilder cb = new OleDbCommandBuilder(da))
		{
			cb.QuotePrefix = "[";
			cb.QuoteSuffix = "]";
			da.InsertCommand = cb.GetInsertCommand();
			da.DeleteCommand = cb.GetDeleteCommand();
			da.UpdateCommand = cb.GetUpdateCommand();
		}

		return da;
	}





除了InsertCommand和UpdateCommand之外,它基本上工作正常。事实上,在我返回它(并将其转换为IDbDataAdapter)之前,InsertCommand很好,之后(return da)命令为null。 UpdateCommand也一样。

我觉得我做的事情不错,但我不知道如何解决这个错误。



什么我试过了:



Cast



Basically it works fine except for InsertCommand and UpdateCommand. Infact, until I return it (and also cast it to IDbDataAdapter) the InsertCommand is fine, after that ("return da") the command is null. Same for UpdateCommand.
I think I do things correctly but I don't know how to solve this error.

What I have tried:

Cast

OleDbDataAdapter da = new OleDbDataAdapter(cmd)

as

IDbDataAdapter da = new OleDbDataAdapter(cmd)

推荐答案

OleDbDataAdapter Class(System.Data.OleDb)| Microsoft Docs [ ^ ]


我发现了问题。这取决于在 OleDbCommandBuilder 上使用使用。所以我改变了我的代码如下

I found the problem. It was up to the use of "using" on OleDbCommandBuilder. So I changed my code as follows
OleDbDataAdapter da = new OleDbDataAdapter(sql, (OleDbConnection) Cnn);
OleDbCommandBuilder cb = new OleDbCommandBuilder(da);
cb.QuotePrefix = "[";
cb.QuoteSuffix = "]";
da.InsertCommand = cb.GetInsertCommand();
da.DeleteCommand = cb.GetDeleteCommand();
da.UpdateCommand = cb.GetUpdateCommand();

return da;

我的 da 对象的属性InserCommand现在很好,不再为null!

真诚地我不知道为什么

and the property InserCommand of my da object now is good, no more null!
Sincerely I dunno why


这篇关于Idataadapter和insertcommand的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆