- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有两个表,第一个是“Employee”,第二个是“YearEmployee”。“YearEmployee”的外键是“Employee”的主键。
我想在数据集中添加两个具有 DataRelation 的数据行,但我得到“外键约束失败”。
我知道我可以在数据库中写入第一个数据行,然后在两个数据行之间建立关系,但我想只用一个函数调用来更新整个数据集。
有人知道这个问题或可以确定我做错了什么?谢谢你的帮助,抱歉我的英语不好..
我的代码:
Public Shared Sub sub_mysql_get_all_dataset(ByVal dsDataset As DataSet, ByVal strTable() As String)
Dim dbConnection As New MySqlConnection
Dim dbAdapter As New MySqlDataAdapter
dbConnection.ConnectionString = _strConnStr
Try
dbConnection.Open()
For Each strTable_row As String In strTable
dbAdapter = New MySqlDataAdapter("SELECT * FROM " & strTable_row, dbConnection)
dbAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey
dbAdapter.FillSchema(dsDataset, SchemaType.Source, strTable_row)
dbAdapter.Fill(dsDataset, strTable_row)
Next
dbConnection.Close()
Catch ex As Exception
Console.WriteLine(ex.Message)
End Try
End Sub
Public Shared Function func_mysql_update_dataset(ByVal dsDataset As DataSet, ByVal strTable() As String) As Boolean
Dim dbConnection As New MySqlConnection
Dim dbAdapter As New MySqlDataAdapter
dbConnection.ConnectionString = _strConnStr
Try
dbConnection.Open()
For Each strTable_row As String In strTable
dbAdapter = New MySqlDataAdapter("SELECT * FROM " & strTable_row, dbConnection)
Dim cb As New MySqlCommandBuilder(dbAdapter)
dbAdapter.Update(dsDataset, strTable_row)
dbAdapter.Fill(dsDataset, strTable_row)
Next
dbConnection.Close()
func_mysql_update_dataset = True
Catch ex As Exception
Console.WriteLine(ex.Message)
func_mysql_update_dataset = False
End Try
End Function
Public Shared ds_Employee As New DataSet
Database.sub_mysql_get_all_dataset(ds_Employee, {"Employee", "YearEmployee", "WorkHours"})
Dim rel_Emp_To_YEmp As DataRelation = ds_Employee.Relations.Add("PK_Employee_to_FK_YearEmployee", ds_Employee.Tables("Employee").Columns("IDEmployee"), ds_Employee.Tables("YearEmployee").Columns("EmployeeID"))
Dim rel_YEmp_To_WHours As DataRelation = ds_Employee.Relations.Add("PK_YearEmployee_to_FK_WorkHours", ds_Employee.Tables("YearEmployee").Columns("IDYearEmployee"), ds_Employee.Tables("WorkHours").Columns("YearEmployeeID"))
Dim dr_Employee As DataRow = ds_Employee.Tables("Employee").NewRow()
dr_Employee("DepartementID") = WPF_Emp_CbBxDepartement.SelectedItem.Key
dr_Employee("FirstName") = WPF_Emp_txtBxFName.Text
ds_Employee.Tables("Employee").Rows.Add(dr_Employee)
Dim dr_YearEmployee As DataRow = ds_Employee.Tables("YearEmployee").NewRow()
dr_YearEmployee.SetParentRow(ds_Employee.Tables("Employee").Rows(ds_Employee.Tables("Employee").Rows.Count - 1), ds_Employee.Tables("YearEmployee").ParentRelations("PK_Employee_to_FK_YearEmployee"))
dr_YearEmployee("fromDate") = CType(tp_YearEmployee.Controls(0).Controls.Find("UC_YE_DTP_From", False).First, DateTimePicker).Value
ds_Employee.Tables("YearEmployee").Rows.Add(dr_YearEmployee)
Database.func_mysql_update_dataset(ds_Employee, {"Employee", "YearEmployee"})
最佳答案
解决方案是在 RowUpdated 上添加一个处理程序。
Private Shared Sub dbAdapter_RowUpdated(sender As Object, e As MySqlRowUpdatedEventArgs)
If (e.StatementType = StatementType.Insert And e.Status = UpdateStatus.Continue) Then
Dim identityQuery As MySqlCommand = New MySqlCommand("Select @@IDENTITY")
Dim strIDTable As String = "ID" & e.TableMapping.DataSetTable
identityQuery.Connection = e.Command.Connection
e.Row(strIDTable) = identityQuery.ExecuteScalar
End If
End Sub
要使用它,只需在 update() 方法之前添加 hanlder 并在 update() 执行之后将其删除,就像这样:
' ### ADD REFRESH ID HANDLER '
AddHandler dbAdapter.RowUpdated, AddressOf dbAdapter_RowUpdated
' ### WRITE DATASET '
dbAdapter.Update(dsDataset, strTable_row)
' ### DELETE REFRESH ID HANDLER '
RemoveHandler dbAdapter.RowUpdated, AddressOf dbAdapter_RowUpdated
关于MySqlDataAdapter.update() 不使用 DataRelation 更新 DataRow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47829547/
我使用c#更新Mysql数据库中数据的过程是这样的 cQuoteData quoteData = new cQuoteData(); DateTime? startDa
我几周来一直在寻找这个错误。而我却找不到正确的答案。所以我已经完成了。这是我的 ASP.net C# 代码 MySqlDataAdapter cmd = new MySqlDataAdapte
尝试使用适配器使用 MySQL 查询中的数据填充数据表时出现错误。 VisualStudio 告诉我错误,“Input String was not in a correct format,” is
我有以下功能代码: Call ConnSettings() Dim objDs As New DataSet Dim Query As String Query = "the query" Cmd =
我在这里查看了一些问题/答案,但似乎没有一个有帮助 我有以下方法从 mySQL 数据库中选择数据 我已突出显示发生错误的行。 传递的字符串sql是SELECT * FROM tblDtCategory
我正在按照互联网上的教程( link )创建一个图片库。我一切正常,但我改变了: Private Sub CreateGallery() i = 0 RemoveCon
我正在使用临时表在 datagridview 中显示数据。当编辑 datagridview 中的数据时,我试图更新临时表。这是我用来执行此操作的 dataGridView1_RowValidated
我使用 MySQL Connector for ASP.NET 从 MySQL 服务器检索数据。一切似乎都工作正常,但就在我的页面的第一次异步回发时,MySQLDataAdapter 没有填充我的数据
我正在使用 MySqlDataAdapter 像这样用我的数据库中的数据填充 dataGridView 小部件 using (var connection = new MySqlConnection
我正在使用 .NET 的 MySql 连接器将数据从 MySql 服务器复制到 SQL Server 2008。 有没有人在使用以下其中一项时体验到比其他项更好的性能? DataAdapter 并以
这是我现在的代码: private static MySqlConnection conn = null; private static MySqlDataAdapter AccountsDa = n
我有一个旧的 powershell 脚本,我正在将其从 Windows 移植到在 OS X 上运行的 .Net Core。该脚本连接到 MySQL 数据库并读取/写入数据。 当我在 Windows 下
我正在尝试使用 MySqlDatAdapter 更新 MySql 表。但是,表格永远不会更新!!!我以前做过,但使用的是 SQL Server。我的代码中是否缺少其他特定于 MySql 的内容?
我不明白 MySQL Data Adapter Fill 方法的实际工作原理。一切都工作正常,直到我尝试从空 MySQL 表填充数据表。数据表没有被清除以反射(reflect)空的 MySQL 表,为
我有一个“worker”函数,它将处理我的程序中的所有 SQL 查询。我将需要执行返回结果集的查询以及仅执行没有任何结果的存储过程的查询。这可以通过 MySqlDataAdapter.Fill 实现吗
我在使用 MySqlDataAdapter.Fill(DataTable) 方法时遇到问题。 显然,我正在使用 MySQL。 这个问题是昨天开始的,在此之前,一切正常。这个问题“不知从何而来”。 我有
我有两个表,第一个是“Employee”,第二个是“YearEmployee”。“YearEmployee”的外键是“Employee”的主键。 我想在数据集中添加两个具有 DataRelation
我使用以下 SQL 语句从数据库获取值。但它总是返回 DBNull 值而不是数据: SELECT FTCalendar FROM T_Feiertage2 GROUP BY FTCalendar OR
所以我正在开发一个客户端-服务器应用程序,它利用 MySQL 数据库并对其进行读取/写入。一切都运行得很好,直到我将以下方法添加到我的 WCF 服务 的接口(interface) 中。 [Operat
我正在尝试将插入、更新和删除命令添加到 MySqlDataAdapter,该适配器已使用以下命令将数据添加到它: //iec211.4521studenti strin
我是一名优秀的程序员,十分优秀!