可以使用 TableAdapterUpdate 方法更新(编辑)数据库中的记录。 TableAdapterUpdate 方法根据传入的参数提供了若干次执行不同 *** 作的重载。 了解调用这些不同方法签名的结果非常重要。 说明 如果您的应用程序不使用 TableAdapter,您就可以使用命令对象更新数据库中的记录(例如, ExecuteNonQuery)。 有关使用命令对象更新数据的更多信息,请参见下面的“使用命令对象更新记录”。 下表描述了各种 TableAdapterUpdate 方法的行为: 方法 说明TableAdapterUpdate(DataTable) 尝试将 DataTable 中的所有更改保存到数据库中。 (这包括从表中移除所有删除的行、将插入的行添加到表中、更新表中已更改的所有行。) TableAdapterUpdate(DataSet) 虽然该参数带有一个数据集,但 TableAdapter 仍尝试将 TableAdapter 的关联 DataTable 中的所有更改保存到数据库中。 (这包括从表中移除所有删除的行、将插入的行添加到表中、更新表中已更改的所有行。) 说明 TableAdapter 的关联 DataTable 是最初配置 TableAdapter 时创建的 DataTable。 TableAdapterUpdate(DataRow) 尝试将指示 DataRow 中的更改保存到数据库中。 TableAdapterUpdate(DataRows()) 尝试将 DataRow 数组中任意行中的更改保存到数据库中。 TableAdapterUpdate("new column values", "original column values") 尝试保存由原始列值标识的单行中的更改。 通常,当应用程序使用数据集以独占方式存储数据时,您使用的是带有 DataSet、 DataTable 或 DataRow 的TableAdapterUpdate 方法。 通常,当应用程序使用对象存储数据时,您使用的是带有列值的 TableAdapterUpdate 方法。 如果TableAdapter 没有带列值的 Update 方法,就表示已将 TableAdapter 配置为使用存储过程,或者已将它的 GenerateDBDirectMethods 属性设置为 false。 尝试从 “数据集设计器”内将TableAdapter 的 GenerateDBDirectMethods 属性设置为 true,然后保存该数据集以重新生成 TableAdapter。 如果TableAdapter 仍没有带列值的 Update 方法,该表就可能没有提供足够多的架构信息以区分各行(例如,未在表中设置任何主键)。 使用TableAdapter 更新现有记录 根据应用程序的需要,TableAdapter 提供了更新数据库中记录的不同方法。 如果应用程序使用数据集存储数据,则可以在所需的 DataTable 中简单地更新记录,然后调用 TableAdapterUpdate 方法并传入 DataSet、 DataTable、 DataRow 或 DataRow 数组。 上表描述了不同的 Update 方法。 用带有 DataSet、DataTable、DataRow 或 DataRows() 的 TableAdapterUpdate 方法更新数据库中的记录 通过直接编辑 DataTable 中的 DataRow,编辑所需的 DataTable 中的记录。 有关更多信息,请参见 如何:编辑数据表中的行。 在 DataTable 中对行进行编辑后,请调用 TableAdapterUpdate 方法。 通过传入完整的 DataSet、 DataTable、 DataRow 数组或单个 DataRow,您可以控制要更新的数据量。 下面的代码显示如何编辑 DataTable 中的记录,然后调用 TableAdapterUpdate 方法将更改保存到数据库中。 (此示例使用 Northwind 数据库 Region 表。) ' Locate the row you want to update Dim regionRow As NorthwindDataSetRegionRow regionRow = NorthwindDataSet_RegionFindByRegionID(1) ' Assign the new value to the desired column regionRowRegionDescription = "East" ' Save the updated row to the database MeRegionTableAdapterUpdate(MeNorthwindDataSet_Region) // Locate the row you want to update NorthwindDataSetRegionRow regionRow; regionRow = northwindDataSetRegionFindByRegionID(1); // Assign the new value to the desired column regionRowRegionDescription = "East"; // Save the updated row to the database thisregionTableAdapterUpdate(thisnorthwindDataSetRegion); 如果应用程序使用对象存储应用程序中的数据,您就可以使用 TableAdapter 的 DBDirect 方法将数据从对象中直接发送到数据库。 这些方法可让您将各列的单个值传递为方法参数。 调用此方法用传入该方法的列值更新数据库中的现有记录。 以下过程使用 Northwind Region 表作为示例。 使用带有列值的 TableAdapterUpdate 方法更新数据库中的记录 调用TableAdapter 的 Update 方法,以参数的形式为每一列传入新值和原始值。 说明 如果没有实例可用,请实例化您要使用的 TableAdapter。 Dim regionTableAdapter As New NorthwindDataSetTableAdaptersRegionTableAdapter regionTableAdapterUpdate(1, "East", 1, "Eastern") NorthwindDataSetTableAdaptersRegionTableAdapter regionTableAdapter = new NorthwindDataSetTableAdaptersRegionTableAdapter(); regionTableAdapterUpdate(1, "East", 1, "Eastern"); 使用命令对象更新记录 下面的示例使用命令对象直接更新数据库中的现有记录。 有关使用命令对象执行命令和存储过程的更多信息,请参见 将数据获取到应用程序。 以下过程使用 Northwind Region 表作为示例。 使用命令对象更新数据库中的现有记录 创建新的命令对象;设置它的 Connection、CommandType 和CommandText 属性;然后打开一个连接,并执行该命令。 Dim sqlConnection1 As New SystemDataSqlClientSqlConnection("YOUR CONNECTION STRING") Dim cmd As New SystemDataSqlClientSqlCommand cmdCommandType = SystemDataCommandTypeText cmdCommandText = "UPDATE Region SET [RegionDescription] = @RegionDescription WHERE [RegionID] = @RegionID" cmdParametersAddWithValue("@RegionDescription", "East") cmdParametersAddWithValue("@RegionID", "1") cmdConnection = sqlConnection1 sqlConnection1Open() cmdExecuteNonQuery() sqlConnection1Close() SystemDataSqlClientSqlConnection sqlConnection1 = new SystemDataSqlClientSqlConnection("YOUR CONNECTION STRING"); SystemDataSqlClientSqlCommand cmd = new SystemDataSqlClientSqlCommand(); cmdCommandType = SystemDataCommandTypeText; cmdCommandText = "UPDATE Region SET [RegionDescription] = @RegionDescription WHERE [RegionID] = @RegionID"; cmdParametersAddWithValue("@RegionDescription", "East"); cmdParametersAddWithValue("@RegionID", "1"); cmdConnection = sqlConnection1; sqlConnection1Open(); cmdExecuteNonQuery(); sqlConnection1Close(); 安全性 您必须具有访问正尝试连接到的数据库的权限,以及更新所需表中记录的权限。 请参见任务 如何:删除数据库中的记录 如何:将新记录插入数据库 如何:将数据从对象保存到数据库概念 TableAdapter 概述 准备应用程序以接收数据 将数据获取到应用程序 在Visual Studio 中将控件绑定到数据 在应用程序中编辑数据 验证数据 保存数据其他资源 Visual Studio 的数据应用程序概述 连接到 Visual Studio 中的数据
你可以新建一张表username2,然后把你excel中的更完整的数据导入到username2里,再把username内容删除,把username2的内容INSERT到username中
1、可以写oracle脚本,从orcl1中将数据备份出来,然后将备份出来的数据导入orcl2中。
2、 程序员:自己用jdbc写一个程序,用Timer类,会定时执行的,从orcl1中将数据查出来,插入orcl2中。如果数据量特别大,oracle数据库支持批量写入,用批量写入功能即可。
3、用DBLINK(oracle一个链接其他oracle库功能),首先在orcl1中创建一个dblink,然后写存储过程,在存储过程中用dblink通道将数据倒过去。
*** 作步骤如下:
准备数据:在excel中构造出需要的数据
2将excel中的数据另存为文本文件(有制表符分隔的)
3将新保存到文本文件中的数据导入到plsql中
在plsql中选择tools-->text
importer,在出现的窗口中选择"data
from
textfile",然后再选择"open
data
file",
在d出的文件选择框中选中保存有数据的文本文件,此时将会看到data
from
textfile中显示将要导入的数据
4在configuration中进行如下配置
注:如果不将"name
in
header"勾选上会导致字段名也当做记录被导入到数据库中,从而导致数据错误
5点击data
to
oracle,选择将要导入数据的表,并在fields中将文本中的字段与表中的字段进行关联
6点击import按钮进行导入
7查看导入的数据
ok,至此数据导入成功。
navicat for mysql更新,用到的工具:navicat,更新步骤如下:
打开navicat for mysql点击帮助下拉菜单的检查更新:
2如果有新版本就会d出如下界面:
3下载完成进行安装就可以了。
注意事项:navicat非免费授权,需要购买授权
MySQL 的 Binlog 记录着 MySQL 数据库的所有变更信息,了解 Binlog 的结构可以帮助我们解析Binlog,甚至对 Binlog 进行一些修改,或者说是“篡改”,例如实现类似于 Oracle 的 flashback 的功能,恢复误删除的记录,把 update 的记录再还原回去等。本文将带您探讨一下这些神奇功能的实现,您会发现比您想象地要简单得多。本文指的 Binlog 是 ROW 模式的 Binlog,这也是 MySQL 8 里的默认模式,STATEMENT 模式因为使用中有很多限制,现在用得越来越少了。
Binlog 由事件(event)组成,请注意是事件(event)不是事务(transaction),一个事务可以包含多个事件。事件描述对数据库的修改内容。
现在我们已经了解了 Binlog 的结构,我们可以试着修改 Binlog 里的数据。例如前面举例的 Binlog 删除了一条记录,我们可以试着把这条记录恢复,Binlog 里面有个删除行(DELETE_ROWS_EVENT)的事件,就是这个事件删除了记录,这个事件和写行(WRITE_ROWS_EVENT)的事件的数据结构是完全一样的,只是删除行事件的类型是 32,写行事件的类型是 30,我们把对应的 Binlog 位置的 32 改成 30 即可把已经删除的记录再插入回去。从前面的 “show binlog events” 里面可看到这个 DELETE_ROWS_EVENT 是从位置 378 开始的,这里的位置就是 Binlog 文件的实际位置(以字节为单位)。从事件(event)的结构里面可以看到 type_code 是在 event 的第 5 个字节,我们写个 Python 小程序把把第383(378+5=383)字节改成 30 即可。当然您也可以用二进制编辑工具来改。
找出 Binlog 中的大事务
由于 ROW 模式的 Binlog 是每一个变更都记录一条日志,因此一个简单的 SQL,在 Binlog 里可能会产生一个巨无霸的事务,例如一个不带 where 的 update 或 delete 语句,修改了全表里面的所有记录,每条记录都在 Binlog 里面记录一次,结果是一个巨大的事务记录。这样的大事务经常是产生麻烦的根源。我的一个客户有一次向我抱怨,一个 Binlog 前滚,滚了两天也没有动静,我把那个 Binlog 解析了一下,发现里面有个事务产生了 14G 的记录,修改了 66 万条记录!下面是一个简单的找出 Binlog 中大事务的 Python 小程序,我们知道用 mysqlbinlog 解析的 Binlog,每个事务都是以 BEGIN 开头,以 COMMIT 结束。我们找出 BENGIN 前面的 “# at” 的位置,检查 COMMIT 后面的 “# at” 位置,这两个位置相减即可计算出这个事务的大小,下面是这个 Python 程序的例子。
切割 Binlog 中的大事务
对于大的事务,MySQL 会把它分解成多个事件(注意一个是事务 TRANSACTION,另一个是事件 EVENT),事件的大小由参数 binlog-row-event-max-size 决定,这个参数默认是 8K。因此我们可以把若干个事件切割成一个单独的略小的事务
ROW 模式下,即使我们只更新了一条记录的其中某个字段,也会记录每个字段变更前后的值,这个行为是 binlog_row_image 参数控制的,这个参数有 3 个值,默认为 FULL,也就是记录列的所有修改,即使字段没有发生变更也会记录。这样我们就可以实现类似 Oracle 的 flashback 的功能,我个人估计 MySQL 未来的版本从可能会基于 Binlog 推出这样的功能。
了解了 Binlog 的结构,再加上 Python 这把瑞士军刀,我们还可以实现很多功能,例如我们可以统计哪个表被修改地最多?我们还可以把 Binlog 切割成一段一段的,然后再重组,可以灵活地进行 MySQL 数据库的修改和迁移等工作。
以上就是关于如何:更新数据库中的记录全部的内容,包括:如何:更新数据库中的记录、数据库怎么更新、oracle数据库怎么更新数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)