DataTable修改后,如何更新数据库

DataTable修改后,如何更新数据库,第1张

下面是实现的代码: DataTable table = new DataTable();//初始化一个DataTable对象 string sqlConnectionString = "Data Source=ComputerName-PC;Initial Catalog=charge_sys;User ID=sa;PWD=123456;"; SqlConnection sqlConnection = new SqlConnection(sqlConnectionString);//连接数据库 SqlCommand sqlCommand = new SqlCommand("select from testB", sqlConnection); SqlDataAdapter sqlAdap = new SqlDataAdapter(sqlCommand); SqlCommandBuilder sqlBuilder = new SqlCommandBuilder(sqlAdap);//这句挺重要的,好像是批量更新的时候用 //DataSet dtst = new DataSet(); 用dataSet也可以完成,下面有对应实现的代码 sqlConnectionOpen(); sqlAdapFill(table); //table = dtstTables["testB"]; DataRow dr = tableRows[0];//第一行 //drBeginEdit(); //drEndEdit(); 貌似这两句主要是数据绑定到控件的时候才用 for (int i = 0; i < tableRowsCount; i++) //修改table中每一行的内容 { dr = tableRows[i]; dr["f"] = 3; //字段名为f } //testB表中必须存在主键,否则无法更新// 这个很重要 sqlAdapUpdate(table); //sqlAdapUpdate(dtst, "testB"); sqlConnectionClose(); MessageBoxShow("aa"); 下面是DataTable与dataGridView 控件绑定,当dataGridView中的数据改变时,更新数据库的代码: DataTable和dataGridView控件绑定代码:private void Form1_Load(object sender, EventArgs e) { string sqlConnectionString = "Data Source=ComputerName-PC;Initial Catalog=charge_sys;User ID=sa;PWD=123456;"; SqlConnection sqlConnection = new SqlConnection(sqlConnectionString);//初始化sqlconnection DataTable table = new DataTable(); SqlDataAdapter sqlAdap = new SqlDataAdapter("select from testB ", sqlConnection); sqlConnectionOpen(); sqlAdapFill(table); sqlConnectionClose(); //将testB表中的数据显示在dataGridView中 thisdataGridView1DataSource = table; } 实现将dataGridView中的改动更新到数据库代码:private void butUpdate_Click(object sender, EventArgs e) { DataTable table = new DataTable(); table = (DataTable)thisdataGridView1DataSource; string sqlConnectionString = "Data Source=WangHaitao-PC;Initial Catalog=charge_sys;User ID=sa;PWD=123456;"; SqlConnection sqlConnection = new SqlConnection(sqlConnectionString); SqlCommand sqlCommand = new SqlCommand("select from testB", sqlConnection); SqlDataAdapter sqlAdap = new SqlDataAdapter(sqlCommand); SqlCommandBuilder sqlBuilder = new SqlCommandBuilder(sqlAdap);//必须有 sqlConnectionOpen(); sqlAdapFill(table); //testB表中必须存在主键,否则无法更新 sqlAdapUpdate(table); sqlConnectionClose(); MessageBoxShow("aa"); }

*** 作步骤如下:

准备数据:在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,至此数据导入成功。

两种方法:

1把两个表需要关联的字段,设置主外键关联,然后设置它们级联更新和删除就行了

2呢,就是给一个表建立触发器,当插入或更新的时候,自动更新另一个表。

试试吧!

在数据库的 *** 作中,更新数据,是很常见的情况。如下参考:

1创建一个临时表,用于演示sqlserver语法中的更新更新修改方法。

2 创建另一个临时表,以演示如何将数据从一个临时表更新到另一个临时表,如下图。

3在临时表中插入几行测试数据,但不在Total列中插入值。

4从#tblUpdate中查询临时表select 中的测试数据;从#tblTotal中选择。

5使用update更新临时表#tblUpdate中的Total结果,假设Total = num price update #tblUpdate set Total = Num Price。

6 再次查询临时表#tblUpdate的结果,您可以看到之前为NULL的Total列有值。

注意事项:

SQL的核心部分相当于关系代数,但又具有关系代数所没有的许多特点,如聚集、数据库更新等。它是一个综合的、通用的、功能极强的关系数据库语言。

mysql 数据库,更新字段语句

一、UPDATE:

UPDATE的功能是更新表中的数据。这的语法和INSERT的第二种用法相似。必须提供表名以及SET表达式,在后面可以加WHERE以限制更新的记录范围。

UPDATE table_anem SET column_name1 = value1, column_name2 = value2,

WHERE 。

如下面的语句将users表中id等于123的记录的age改为24。

UPDATE users SET age = 24 WHERE id = 123。

同样,可以使用UPDATE更新多个字段的值 UPDATE users SET age = 24, name = 'Mike' WHERE id = 123。

上面的UPDATE语句通过WHERE指定一个条件,否则,UPDATE将更新表中的所有记录的值。

数据库中update的用法的用法你知道吗?下面我就跟你们详细介绍下数据库中update的用法的用法,希望对你们有用。

数据库中update的用法的用法如下:

首先,单表的UPDATE语句:

UPDATE [LOW_PRIORITY] [IGNORE] tbl_name

SET col_name1=expr1 [, col_name2=expr2 ]

[WHERE where_definition]

[ORDER BY ]

[LIMIT row_count]

其次,多表的UPDATE语句:

UPDATE [LOW_PRIORITY] [IGNORE] table_references

SET col_name1=expr1 [, col_name2=expr2 ]

[WHERE where_definition]

UPDATE语法可以用新值更新原有表行中的各列。

SET子句指示要修改哪些列和要给予哪些值。WHERE子句指定应更新哪些行。

如果没有WHERE子句,则更新所有的行。如果指定了ORDER BY子句,则按照被指定的顺序对行进行更新。

LIMIT子句用于给定一个限值,限制可以被更新的行的数目。

UPDATE语句支持以下修饰符:

1,如果您使用LOW_PRIORITY关键词,则UPDATE的执行被延迟了,直到没有其它的客户端从表中读取为止。

2,如果您使用IGNORE关键词,则即使在更新过程中出现错误,更新语句也不会中断。

如果出现了重复关键字冲突,则这些行不会被更新。如果列被更新后,新值会导致数据转化错误,则这些行被更新为最接近的合法的值。

如果您在一个表达式中通过tbl_name访问一列,则UPDATE使用列中的当前值。

例如,把年龄列设置为比当前值多一:

复制代码 代码如下:

mysql> UPDATE persondata SET age=age+1;

UPDATE赋值被从左到右评估。

例如,对年龄列加倍,然后再进行增加:

复制代码 代码如下:

mysql> UPDATE persondata SET age=age2, age=age+1;

如果您把一列设置为其当前含有的值,则MySQL会注意到这一点,但不会更新。

如果您把被已定义为NOT NULL的列更新为NULL,则该列被设置到与列类型对应的默认值,并且累加警告数。

对于数字类型,默认值为0;对于字符串类型,默认值为空字符串('');对于日期和时间类型,默认值为“zero”值。

UPDATE会返回实际被改变的行的数目。Mysql_info() C API函数可以返回被匹配和被更新的行的数目,以及在UPDATE过程中产生的警告的数量。

您可以使用LIMIT row_count来限定UPDATE的范围。LIMIT子句是一个与行匹配的限定。

只要发现可以满足WHERE子句的row_count行,则该语句中止,不论这些行是否被改变。

如果一个UPDATE语句包括一个ORDER BY子句,则按照由子句指定的顺序更新行。

您也可以执行包括多个表的UPDATE *** 作。table_references子句列出了在联合中包含的表。

例子:

复制代码 代码如下:

SQL>UPDATE items,month SET itemsprice=monthprice

WHERE itemsid=monthid;

说明:以上代码显示出了使用逗号 *** 作符的内部联合,但是multiple-table UPDATE语句可以使用在SELECT语句中允许的任何类型的联合,比如LEFT JOIN。

注释:不能把ORDER BY或LIMIT与multiple-table UPDATE同时使用。

在一个被更改的multiple-table UPDATE中,有些列被引用。您只需要这些列的UPDATE权限。有些列被读取了,但是没被修改。您只需要这些列的SELECT权限。

如果您使用的multiple-table UPDATE语句中包含带有外键限制的InnoDB表,则MySQL优化符处理表的顺序可能与上下层级关系的顺序不同。

在此情况下,语句无效并被 回滚。同时,更新一个单一表,并且依靠ON UPDATE功能。

该功能由InnoDB提供,用于对其它表进行相应的修改。

目前,不能在一个子查询中更新一个表,同时从同一个表中选择。

update语句的几种基本用法

A 使用简单的 UPDATE

下列示例说明如果从 UPDATE 语句中去除 WHERE 子句,所有的行会受到什么影响。

下面这个例子说明,如果表 publishers 中的所有出版社将总部搬迁到佐治亚州的亚特兰大市,表 publishers 如何更新。

复制代码 代码如下:

UPDATE publishers

SET city = 'Atlanta', state = 'GA'

本示例将所有出版商的名字变为 NULL。

复制代码 代码如下:

UPDATE publishers

SET pub_name = NULL

也可以在更新中使用计算值。本示例将表 titles 中的所有价格加倍。

复制代码 代码如下:

UPDATE titles

SET price = price 2

B把 WHERE 子句和 UPDATE 语句一起使用

WHERE 子句指定要更新的行例如,在下面这个虚构的事件中,北加利福尼亚更名为 Pacifica(缩写为 PC),而奥克兰的市民投票决定将其城市的名字改为 Bay City。这个例子说明如何为奥克兰市以前的所有居民(他们的地址已经过时)更新表 authors。

复制代码 代码如下:

UPDATE authors

SET state = 'PC', city = 'Bay City'

WHERE state = 'CA' AND city = 'Oakland'

必须编写另一个语句来更改北加利福尼亚其它城市的居民所在的州名。

C通过 UPDATE 语句使用来自另一个表的信息

本示例修改表 titles 中的 ytd_sales 列,以反映表 sales 中的最新销售记录。

复制代码 代码如下:

UPDATE titles

SET ytd_sales = titlesytd_sales + salesqty

FROM titles, sales

WHERE titlestitle_id = salestitle_id

AND salesord_date = (SELECT MAX(salesord_date) FROM sales)

这个例子假定,一种特定的商品在特定的日期只记录一批销售量,而且更新是最新的。如果不是这样(即如果一种特定的商品在同一天可以记录不止一批销售量),这里所示的例子将出错。例子可正确执行,但是每种商品只用一批销售量进行更新,而不管那一天实际销售了多少批。这是因为一个 UPDATE 语句从不会对同一行更新两次。

对于特定的商品在同一天可销售不止一批的情况,每种商品的所有销售量必须在 UPDATE 语句中合计在一起,如下例所示:

复制代码 代码如下:

UPDATE titles

SET ytd_sales =

(SELECT SUM(qty)

FROM sales

WHERE salestitle_id = titlestitle_id

AND salesord_date IN (SELECT MAX(ord_date) FROM sales))

FROM titles, sales

D 将 UPDATE 语句与 SELECT 语句中的 TOP 子句一起使用

这个例子对来自表 authors 的前十个作者的 state 列进行更新。

复制代码 代码如下:

UPDATE authors

SET state = 'ZZ'

FROM (SELECT TOP 10 FROM authors ORDER BY au_lname) AS t1

WHERE authorsau_id = t1au_id

1、设置一个DB_VERSION

public static final int DB_VERSION = 1;

2、当你要更新表的时候就把DB_VERSION+1,就会触发onUpgrade,数据库就更新了,记得采纳

public DBHelper() {

    // for test

    daoConfig = new DbManagerDaoConfig()

            setDbName(DB_NAME)

            setDbVersion(DB_VERSION)

            setDbDir(EnvironmentgetExternalStorageDirectory())

            setDbOpenListener(new DbManagerDbOpenListener() {

                @Override

                public void onDbOpened(DbManager db) {

                    dbgetDatabase()enableWriteAheadLogging();

                }

            })

            setDbUpgradeListener(new DbManagerDbUpgradeListener() {

                @Override

                public void onUpgrade(DbManager db, int oldVersion, int newVersion) {

                    updateTable(db, xxclass);

                    

                }

            });

}

以上就是关于DataTable修改后,如何更新数据库全部的内容,包括:DataTable修改后,如何更新数据库、如何通过excel更新数据库中对应数据更新、SQL Server中如何进行数据库级别的更新 *** 作等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9319548.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存