社区
C#
帖子详情
能否将DataSet中的现存数据转换成Insert语句?
lunix_ly
2003-10-16 10:50:46
能否将DataSet中的现存数据转换成Insert语句?如果能,该怎样实现呢?
...全文
114
7
打赏
收藏
能否将DataSet中的现存数据转换成Insert语句?
能否将DataSet中的现存数据转换成Insert语句?如果能,该怎样实现呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
cqzhangq
2003-10-17
打赏
举报
回复
用CommandBuilder 和 DataAdapter 是可以的。需要要处理行状态。
给你另外一种方法,就是直接拼Sql语句。写了段通用的代码:
/// <summary>
/// 根据DataTable构建插入的Sql语句
/// </summary>
/// <param name="table"></param>
/// <returns></returns>
public static string GetInsertSQL(DataTable table)
{
string sqlstr = "";
foreach(DataRow row in table.Rows)
{
sqlstr += "insert into " + table.TableName + "(";
foreach(DataColumn col1 in table.Columns)
{
sqlstr += col1.ColumnName + ",";
}
sqlstr = sqlstr.Substring(0,sqlstr.Length - 1) + ") values (";
string tempsql = "";
string tempsql1 = "";
foreach(DataColumn col in table.Columns)
{
tempsql1 = GetValueSQL(row, col);
if (tempsql1.Length > 0)
{
if (tempsql.Length > 0) tempsql += ",";
tempsql += tempsql1;
}
}
if (tempsql.Length == 0) continue;
sqlstr += tempsql + ")";
}
return sqlstr;
}
storm97
2003-10-17
打赏
举报
回复
你的数据库的现存数据如果是从DataAdapter来得,那么你可以在查询前定义一个CommandBuilder,然后指定其查询语句,用DataAdapter来执行查询,把数据填充入DataSet;然后这个CommandBuilder会自动根据查询数据库时访问到的表结构自动生成这个DataAdapter的Update和Delete、Insert命令。
对于在运行时动态指定 SelectCommand(例如通过采用用户提供的文本命令的查询工具)的情况,可能无法在设计时指定合适的 InsertCommand、UpdateCommand 或 DeleteCommand。如果 DataTable 映射到单个数据库表或从单个数据库表生成,则可以利用 CommandBuilder 对象自动生成 DataAdapter 的 DeleteCommand、InsertCommand 和 UpdateCommand。
使用 CommandBuilder 自动生成 SQL 语句
若要为 DataAdapter 自动生成 SQL 语句,请首先设置 DataAdapter 的 SelectCommand 属性。然后,创建一个 CommandBuilder 对象并以参数形式指定 CommandBuilder 将为其自动生成 SQL 语句的 DataAdapter。
[C#]
SqlDataAdapter custDA = new SqlDataAdapter("SELECT * FROM Customers", nwindConn);
SqlCommandBuilder custCB = new SqlCommandBuilder(custDA);
custCB.QuotePrefix = "[";
custCB.QuoteSuffix = "]";
DataSet custDS = new DataSet();
nwindConn.Open();
custDA.Fill(custDS, "Customers");
// Code to modify data in the DataSet here.
// Without the SqlCommandBuilder, this line would fail.
custDA.Update(custDS, "Customers");
nwindConn.Close();
生成语句后你可以访问DataAdapter的InsertCommand属性来得到生成的语句。
为了自动生成命令,必须设置 SelectCommand 属性,这是最低的要求。SelectCommand 所检索的表架构确定自动生成的 INSERT、UPDATE 和 DELETE 语句的语法。
为了返回构造插入、更新和删除命令所必需的元数据,CommandBuilder 必须执行 SelectCommand。因此,必须额外经历一次到数据源的行程,这可能会降低性能。若要实现最佳性能,请显式指定命令而不是使用 CommandBuilder。
SelectCommand 还必须返回至少一个主键或唯一列。如果不存在任何主键或唯一列,则将生成 InvalidOperation 异常,并且不会生成命令。
当与 DataAdapter 关联时,CommandBuilder 将自动生成 DataAdapter 的 InsertCommand、UpdateCommand 和 DeleteCommand 属性(如果它们是空引用)。如果已存在用于某属性的 Command,则将使用现有 Command。
通过联接两个或更多个表来创建的数据库视图不会被视为单个数据库表。在这种情况下,将无法使用 CommandBuilder 来自动生成命令,而需要显式地指定命令。有关显式设置命令以便将对 DataSet 的更新解析回数据源的信息,请参见使用 DataAdapter 和 DataSet 更新数据库。
您可能需要将输出参数映射回 DataSet 的更新行。一项常见的任务是从数据源中检索自动生成的标识字段或时间戳的值。默认情况下,CommandBuilder 不会将输出参数映射到更新行中的列。在这种情况下,将需要显式指定命令。有关将自动生成的标识字段映射回插入行的列的示例,请参见检索“标识”或“自动编号”值。
lunix_ly
2003-10-17
打赏
举报
回复
请各位高手帮我提提思路!等待!
shajie
2003-10-17
打赏
举报
回复
用数据适配器的update方法试一试
lunix_ly
2003-10-17
打赏
举报
回复
是否我的这种方法是无法实现的?
那是否有其它的方法来实现这种数据传输问题?
lunix_ly
2003-10-16
打赏
举报
回复
问题是我想在A电脑上自动生成sql文本文件,然后在B电脑上运行sql文件,将数据自动插入数据库。
用你的方法无法实现!B电脑中还未有数据
kuangren
2003-10-16
打赏
举报
回复
用 SELECT 子查询为一行或多行指定数据值。
INSERT INTO MyTable (PriKey, Description)
SELECT ForeignKey, Description
FROM SomeView
Spark的灵魂:RDD和
DataSet
本课重点讲解Spark 的灵魂RDD 和
DataSet
。讲解RDD 的定义、五大特性剖析及
DataSet
的定义和内部机制剖析;对RDD 弹性特性七个方面进行解析;讲解RDD 依赖关系,包括窄依赖、宽依赖; 解析Spark
中
DAG 逻辑视图;对RDD...
Oracle
insert
into table
oracle
中
的
insert
语句
在oracle
中
使用DML语言的
insert
语句
来向表格
中
插入
数据
,先介绍每次只能插入一条
数据
的语法
INSERT
INTO 表名(列名列表) VALUES(值列表); 注意: ...
常用SQL
语句
实例大全(含过滤及删除重复
数据
、导入导出
数据
等)
常用SQL
语句
实例(含过滤及删除重复
数据
、导入导出
数据
等)本文整理一些常用的SQL
语句
实例(如过滤重复
数据
、删除重复
数据
、导入导出
数据
等),收藏备用,不断更新
中
……。欢迎访问作者网站获取最新版:...
在ASP.NET 2.0
中
操作
数据
::创建一个
数据
访问层
原文 | 下载本教程
中
的编码例子 | 下载本教程的英文PDF版 导言 作为web开发人员,我们的生活围绕着...我们将从创建一个软件框架开始,这个框架的组成部分包括一个使用强类型的
DataSet
的
数据
访问层(DAL),一个实...
SQL
语句
导入导出大全
SQL
语句
导入导出大全[收集] /******* 导出到excel EXEC master..xp_cmdshell 'bcp SettleDB.dbo.shanghu out c:\temp1.xls -c -q - S"GNETDATA/GNETDATA" -U"sa" -P""' /*********** 导入Excel ...
C#
110,525
社区成员
642,571
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章