tableAdapter.update没有't work

aw48

活跃的成员
加入
2013年2月9日
消息
35
地点
德国
编程经验
10+
你好,
我是这个电路板的新手,不需要解决我的C#-Application问题的解决方案。

我正在使用Visual C#2008 Xpress,SQL Srver 2005 Xpress

我就是做这个的 :

数据集是itemdatads

sa.itemdatadstableAdapters.tblitemdatableAdapter taitemdata;
ItemDatads DS = New ItemDatads();
DataTable dt = ds.tables [tablename];

我创建并填充了一系列对象AO并执行以下操作:DT.LoadDoatrarow(AO,True);
当我检查DS(调试)时,我找到表格和表格,我找到了数据

最后我这样做:taitemdata.update(DS);

这是没有的,但是当我检查db-table时,没有写入数据

当我添加并更新了DataSet-Designer时,TablaeeAdtors插入,更新,选择和删除方法工作。
填充()方法也有效地'原因此记录可以在DS中看到。

任何建议我做错了什么或我能做什么分析问题?
thanks in advance
 

jmplhinney.

C#论坛主持人
工作人员
加入
2011年4月23日
消息
3,731
地点
悉尼,澳大利亚
编程经验
10+
首先要做的是检查更新返回的值。假设未抛出异常,该值表示在数据库中受影响的记录数。只有两种可能性:

1.更新返回零,在这种情况下,您的DataTable不包含该适配器可以保存的任何更改。
2.更新返回非零值,在这种情况下,已更改,并保存了它们。

最有可能在您的情况下,它是#2,这意味着您正在寻找错误的地方或在错误的时间进行数据。要了解如何管理本地数据文件,因此在何时何地查找数据,请按照我的签名中的第一个链接遵循第一个链接。
 

aw48

活跃的成员
加入
2013年2月9日
消息
35
地点
德国
编程经验
10+
感谢您的回复
我必须道歉,我不知道更新()返回一个值。
这不应该发生在经验丰富的程序员身上。
后来我会看看这个。在线时,我无法使用Visual Studio,Visual Studio GetSoOOOOOOOO SLOOOOOOOW(也许MS正在从我的机器下载所有巧妙的东西......哈,哈)
也许与此同时,我们可以解决我得到的第二个问题:
我无法同时使用Visual Studio和SQL Management Studio。这是不好的一部分是,当我关闭SQLMS并重新打开VS时,它无法连接到数据库。
我所做的就是杀死SQLServ-service并重新启动它,一切正常。
也许你有一个关于我如何处理这个的建议。
但今天是星期天,一个人不应该是要占用的。
顺便说一下,每次我发布时,我都会收到我尚未登录的消息,尽管PageHeader说欢迎AW48。我做错了什么?
 

aw48

活跃的成员
加入
2013年2月9日
消息
35
地点
德国
编程经验
10+
好的,我会这样做
现在到更新问题:(自英语不是我的母语,我不知道的一些调试表达式)
更新()实际返回0,但数据位于表中,或者至少是我看到它的方式。
我将光标指向要打开TreeView的数据集,然后我选择表(在这种情况下,只有一个表属于DataSet)。
然后是“输入数据”的底部条目,并显示了数据的两行。
由于除了两个主键列之外的所有列都是SQL-Variant类型(C#中的System.Object),我用另一个表测试了没有SQL-Variant的表,但结果是相同的。
现在我用一个新项目做了所有测试,所以我认为这不是一个配置问题。
顺便说一下,我可以检索当前数据库中的所有数据。
弗兰兹
 

jmplhinney.

C#论坛主持人
工作人员
加入
2011年4月23日
消息
3,731
地点
悉尼,澳大利亚
编程经验
10+
可能是您向我们展示所有相关代码的时候了。您还应该注意,您可以随时调用DataTable上的Getchanges来获取仅包含更改的新DataTable,以查看是否存在该表中的更改。您还可以通过指定DataRowState来过滤更改类型。
 

aw48

活跃的成员
加入
2013年2月9日
消息
35
地点
德国
编程经验
10+
这里是 :

由于所有人都完成了设计师,因此没有太多的代码。

公共部分类Form1:表格
{
public Form1()
{
initializeComponent();
}

私有void pbaddrow_mouseUp(Object Sender,MouseEventargs E)
{
int n = dsitem.tblitem.columns.count;
ao = new Object[n];

ao[0] = "pos";
AO [1] = system.datetime.now;
ao[2] = "postext";
ao[3] = "app";

dsitem.tblitem.loadDatarow(AO,True);

//连接打开()和关闭()我们可以离开ta或
//我们打开()这里的连接和ta将关闭()留给我们
taitem.connection.open();

int结果= this.taitem.update(dsitem);

taitem.connection.close();
}

Object[] ao;
}

some details :
dsitem.tblitem有4列:name(migherkey,s10),日期(DateTime,Explessnull),文本(S30,ExpseSnull),App(S10,Expessnull)
使用Designer,我添加了一行存储在DB中。
使用这款手续数量的代码,我添加了第二行,在DS中显示:

{dbtest.testdbdataset.tblitemrow}
"app"
{12.02.2013 12:37:18}
"pos"
{tblItem}
"postext"
(值在列标字母顺序排列中列出,从而列出"pos"列出了第3次。 {tblitem}我不知道。我的猜测是由于底奶酪)

此行未存储!

have a nice day
franz
 

约翰

C#论坛主持人
工作人员
加入
2011年4月23日
消息
1,160
地点
挪威
编程经验
10+
dsitem.tblitem.loadDatarow(AO,True);
您已将AcceptChanges参数设置为True,这意味着行状态设置为未更改,并且TableAdapter更改更新到数据库。
 
最佳 底部