标签: tableadapter

如何删除选定的DataGridViewRow并更新连接的数据库表?

我有一个DataGridViewWindows窗体应用程序的控件(用C#编写).

我需要的是:当用户选择DataGridViewRow,然后单击"删除"按钮时,应该删除该行,接下来,需要使用表适配器更新数据库.

这是我到目前为止:

private void btnDelete_Click(object sender, EventArgs e)
{
    if (this.dataGridView1.SelectedRows.Count > 0)
    {
        dataGridView1.Rows.RemoveAt(this.dataGridView1.SelectedRows[0].Index);
    }                
}
Run Code Online (Sandbox Code Playgroud)

此外,这只删除一行.我希望用户可以选择多行.

c# datagridview tableadapter winforms

46
推荐指数
3
解决办法
32万
查看次数

在传递带有已修改行的DataRow集合时,Update需要有效的UpdateCommand

所以我上周有这个工作.至少,我以为我做到了! DataGridView更新

然后我今天再次开始研究这个项目并且正在进行中

在传递带有已修改行的DataRow集合时,Update需要有效的UpdateCommand.

scDB.SSIS_Configurations_StagingDataTable table = (scDB.SSIS_Configurations_StagingDataTable)stagingGrid.DataSource;
myStagingTableAdapter.Update(table);
Run Code Online (Sandbox Code Playgroud)

StagingTableAdapter具有一个附加的查询这需要"过滤器"作为参数.那是用来填补DataGridView.在创建该查询的向导中,我看到"生成了更新".我发现大多数有此错误的帖子都要求使用命令构建器生成更新语句.我该怎么办?

.net c# tableadapter

15
推荐指数
4
解决办法
5万
查看次数

你如何从C#中的DataRow读取一个字节数组?

我有DataSet一个DataTable是正确填写一个单一的DataRow通过TableAdapter.

我可以使用以下代码从DataRow中提取数据:

dataFileID = (int)this.dataFileDataRow["DataFileID"];
dataFileName = (string)this.dataFileDataRow["DataFileName"];
dataFileDate = (DateTime)this.dataFileDataRow["DataFileDate"];
Run Code Online (Sandbox Code Playgroud)

我有另一个名为DataFile的列varbinary(max).

当我尝试从DataRow上面提取该列的数据时,我什么都没得到.

byte[] fileFromDatabase = (byte[])this.dataFileDataRow["DataFile"];
Run Code Online (Sandbox Code Playgroud)

如果我在这个位置放置一个断点,我可以查看dataFileDataRow,查看ItemArray属性,看看二进制数据是否位于ItemArray中的位置5.

我已尝试使用其索引直接访问ItemArray,但字节数组未被复制到fileFromDatabase变量.

我还注意到将fileFromDatabase添加到我的手表会产生以下错误:

"名称'fileFromDatabase'在当前上下文中不存在"

执行仍然与fileFromDatabase的定义在同一个块中,所以我不明白它是如何脱离上下文的.

我将Visual Studio的配置设置为Release而不是Debug.这导致我在尝试检查fileFromDatabase时没有看到我正在寻找的实时调试信息.从Release转换到Debug后,我现在可以在手表中看到变量,并且可以验证上面的代码是否正常工作.

c# debugging bytearray datarow tableadapter

9
推荐指数
1
解决办法
2万
查看次数

无法启用约束.使用数据表适配器时

我越来越

无法启用约束.一行或多行包含违反非null,唯一或外键约束的值.

对于我的表适配器中的以下查询.

select 
f.id, f.name, p.productid, p.masterproductID, f.productid, f.dateCreated, f.retired, p.code as HTML_DisplayName, p.ThumbnailID, p.code
from FormSaveData f 

inner join Products p on (f.productid = p.ProductID or f.productId = p.MasterProductID)

where f.userId = 130559
and (p.b_IsArchived = 0 and p.b_IsRetired=0 and p.b_IsStaged = 0)
Run Code Online (Sandbox Code Playgroud)

当我自己运行查询时,它工作正常,其他userIds也可以正常工作,所以这是一个非常特殊的情况.我把它缩小到我内心加入的事实

f.productid = p.ProductID **or** f.productId = p.MasterProductID

我相信在某些罕见的情况下,这会导致表适配器不喜欢的某种冲突.对于表适配器和SQL,我几乎是一个新手,因此任何关于如何更好地编写它或为什么会发生这种情况的建议都将非常感激.

FormSaveData表中没有任何约束,键或特殊规则设置.

.net c# sql tableadapter

8
推荐指数
1
解决办法
8303
查看次数

TableAdapter向导没有来自选择列表中的"设置"的连接字符串

C#VS 2010 .net v4.0

我将DataSet添加到我的项目(类库)中,当我尝试添加TableAdapter时,我添加到Settings的连接字符串无法选择.我有其他数据源(来自服务器资源管理器)的连接字符串可用.我无法使用解决方法,我需要从Settings中提取连接字符串.我在许多其他项目中做同样的事情,它通常有效,但有时候我只做随机事情,直到我终于看到我的连接字符串.我希望升级到vs2010能解决这个问题.希望有人见过这个并且可以提供帮助,谢谢.

c# settings connection-string dataset tableadapter

7
推荐指数
1
解决办法
5918
查看次数

ADO.NET TableAdapter参数

我有一个查询,我希望通过ASP.NET TableAdapter运行,该表包含一个'IN'子句,它通过参数接收它的值.

我的问题是,如何指定此参数?我想写这样的条件语句:

AND b.group_category_id in (@ParamList)
Run Code Online (Sandbox Code Playgroud)

其中@ParamList是参数的字符串,例如"4,12,45,23",但由于指定的id是Integer,它会抱怨它无法将String转换为Integer.这是有道理的,但有没有办法在ASP.NET TableAdapter的SQL语句中指定这样的列表?

sql asp.net ado.net tableadapter

6
推荐指数
1
解决办法
2128
查看次数

使用TableAdapter插入后返回不正确的ID

当我执行插入时TableAdapter:

int pid = this.purchaseTableAdapter.Insert(supplierid, datetime, "", 
    totalprice, amountpaid);
Run Code Online (Sandbox Code Playgroud)

它返回115时返回错误的id .

如何获得正确的ID?

c# tableadapter c#-3.0

6
推荐指数
2
解决办法
8440
查看次数

我的TableAdapter的更新和删除命令怎么了?

好像我正在与一个顽抗的VS2008 DataSet设计师作战.我一直在尝试做一个简单的2表数据集解决方案,其中一个表只是存储在另一个表中的整数值的文本含义.基本数据设计101.

Table1
CharField1
CharField2
IntForeignKeyField1
etc

Table2
IntPrimaryKey1
ValueForKeyField
Run Code Online (Sandbox Code Playgroud)

这并没有真正影响我遇到的问题,我不相信,因为我不想做任何事情,只是从第二个表中读取值,所以我可以在客户端的DataGridViewComboBoxColumn中选择它们 - 我会永远不要在客户端上编辑它们.但是,我离题了.

由于它存在于Web服务中,并且我希望将一个强类型数据集传递给此Web服务的客户端,因此我决定使用DataSet Designer来构建TableAdapter和所有管道,认为它可能不那么有用,也更容易保持.

因此,我创建了漂亮的框并编辑了select语句,指示设计者为表适配器创建所有Insert,Update和Delete命令.它很高兴地告诉我,一切都按照我的要求完成了.

但是,当我尝试使用Update语句时,我收到一条错误消息,指出没有有效的Update语句!在对网络上有类似问题的人进行一些徒劳无功的搜索之后,我挖掘了数据集的XML.果然,没有Update语句,也没有Delete语句.

我尝试从项目中完全删除并重新创建DataSet,结果相同.未创建更新或删除语句,即使报告已完成.

我最后通过检查来自另一个项目的另一个设计数据集手动构建Update语句XML,因此Web服务现在正在运行.但是,我没有任何信心,我的更改将持续通过设计师发起的编辑,我很难过为什么它不起作用.有任何想法吗?

感谢任何反馈,戴夫

designer dataset tableadapter visual-studio-2008

5
推荐指数
1
解决办法
1万
查看次数

无法将参数值从字符串转换为guid

我有一个分层应用程序.数据层使用包含tableadapter的数据集调用数据库.在数据库表中有一个名为ID的字段UniqueIdentifier.然后我创建以下查询:

select * from tbl where ID=@ID
Run Code Online (Sandbox Code Playgroud)

当我尝试在数据集设计器中预览结果时,我收到错误"无法将参数值从字符串转换为guid".

我尝试在传入的值周围添加单引号,但没有用.

我哪里错了?

asp.net tableadapter n-tier-architecture

5
推荐指数
1
解决办法
8829
查看次数

使用存储过程时如何检查删除/更新操作是否成功完成?

假设我们有存储过程执行这样的简单操作:

CREATE PROCEDURE [dbo].[AddNewAuthorReturnID]
(   
    @Author_Name VARCHAR(MAX),
    @Author_ID int OUTPUT
)
AS
    SET NOCOUNT OFF;
BEGIN
    INSERT INTO AUTHORS (@Author_Name)
    VALUES (@Author_Name)
    SET @Author_ID = SCOPE_IDENTITY()
    
    SELECT @Author_ID
 END
Run Code Online (Sandbox Code Playgroud)

在上面的过程中,返回的id是操作成功的标志。

考虑等价于DELETE

CREATE PROCEDURE [dbo].[DeleteAuthor]
(       
    @Author_ID int 
)
AS
    SET NOCOUNT OFF;
BEGIN
    DELETE FROM AUTHORS 
    WHERE
    (Author_ID = @Author_ID)
END
Run Code Online (Sandbox Code Playgroud)
  • AUTHORS如果我们使用上述程序,我们如何知道操作成功并且记录已成功删除?
  • 用更新操作?

c# sql-server stored-procedures tableadapter

4
推荐指数
1
解决办法
6385
查看次数