SQL server查询出一个datatable,如何存入到Access数据库?

问题描述

stringsql2="select*fromTEST.dbo.TABLE11";DataTabledt=DBHelp.ExecDataTable(sql2);StringtableName="TABLE1";OleDbConnectionconn=newOleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;DataSource="+DBpath);conn.Open();OleDbDataAdapteradapt=newOleDbDataAdapter();varcmd=newOleDbCommand("insertinto"+tableName+"(字段名称,字段类型,字段长度)"+"values(@字段名称,@字段类型,@字段长度)",conn);cmd.Parameters.Add("@字段名称",OleDbType.VarChar,40,"字段名称");cmd.Parameters.Add("@字段类型",OleDbType.VarChar,40,"字段类型");cmd.Parameters.Add("@字段长度",OleDbType.VarChar,40,"字段长度");adapt.InsertCommand=cmd;OleDbCommandBuilderbuilder=newOleDbCommandBuilder(adapt);adapt.Update(dt);这样写,没有报错,但是没有数据。不知道是哪里出了问题

解决方案

解决方案二:
foreach(varrindt.Rows){varcmd=newOleDbCommand("insertinto"+tableName+"(字段名称,字段类型,字段长度)"+"values(@字段名称,@字段类型,@字段长度)",conn);cmd.Parameters.Add("@字段名称",OleDbType.VarChar,40,"字段名称"){Value=r["字段名称"]};cmd.Parameters.Add("@字段类型",OleDbType.VarChar,40,"字段类型"){Value=r["字段类型"]};cmd.Parameters.Add("@字段长度",OleDbType.VarChar,40,"字段长度"){Value=r["字段长度"]};cmd.ExecuteNonQuery();}

循环插入
解决方案三:
让这个datatable做一个循环,一条条插入到数据库
解决方案四:
引用1楼starfd的回复:

foreach(varrindt.Rows){varcmd=newOleDbCommand("insertinto"+tableName+"(字段名称,字段类型,字段长度)"+"values(@字段名称,@字段类型,@字段长度)",conn);cmd.Parameters.Add("@字段名称",OleDbType.VarChar,40,"字段名称"){Value=r["字段名称"]};cmd.Parameters.Add("@字段类型",OleDbType.VarChar,40,"字段类型"){Value=r["字段类型"]};cmd.Parameters.Add("@字段长度",OleDbType.VarChar,40,"字段长度"){Value=r["字段长度"]};cmd.ExecuteNonQuery();}

循环插入

你这个写上去报错的,能详细一点吗?"){Value=r["字段名称"]};报错的
解决方案五:
改成Add(newOleDbParameter(...)

时间: 2016-06-06

SQL server查询出一个datatable,如何存入到Access数据库?的相关文章

如何找出你性能最差的SQL Server查询

原文:如何找出你性能最差的SQL Server查询 我经常会被反复问到这样的问题:"我有一个性能很差的SQL Server.我如何找出最差性能的查询?".因此在今天的文章里一些让你很容易找到问题答案的信息和向导. 问SQL Server! SQL Server的一个优点是它本身能回答几乎所有你的问题,因为SQL Server在各个DMV和DMF里存储了很多故障排除信息.另一方面这也是个缺点,因为你必须知道各个DMV/DMF,还有如何把它们解释和关联在一起. 至于你的最差性能SQL Se

Sql Server 查询性能优化之走出索引的误区分析_MsSql

据了解绝大多数开发人员对于索引的理解都是一知半解,局限于大多数日常工作没有机会.也什么没有必要去关心.了解索引,实在哪天某个查询太慢了找到查询条件建个索引就ok,哪天又有个查询慢了,再建立个索引就是,或者干脆把整个查询SQL直接发给DBA,让DBA直接帮忙优化了,所以造成的状况就是开发人员对于索引的理解.认识很局限,以下就把我个人对于索引的理解及浅薄认识和大家分享下,希望能解除一些大家的疑惑,一起走出索引的误区 误区1.在表上建立了索引,在查询时用到了索引的列,索引就一定会生效 首先明确下这样的

分析Sql Server查询性能优化之走出索引的误区

误区1.在表上建立了索引,在查询时用到了索引的列,索引就一定会生效 首先明确下这样的观点是错误的,SQL Server查询优化器是基于开销进行选择的优化器,通过一系列复杂判断来决定是否使用索引.使用什么类型索引.使用那个索引.SQL Server内部维护着索引列上的数据的统计,统计信息会随着索引列内容的变化而变化,索引的有效期完全取决于索引列上的统计信息,随着数据的变化关于索引的检索机制也随之变化.对于查询优化器来说始终保持查询开销最低始终是其的不二选择,如果一个非聚集索引的列上有大量的重复值,

Sql Server 查询性能优化之走出索引的误区分析

据了解绝大多数开发人员对于索引的理解都是一知半解,局限于大多数日常工作没有机会.也什么没有必要去关心.了解索引,实在哪天某个查询太慢了找到查询条件建个索引就ok,哪天又有个查询慢了,再建立个索引就是,或者干脆把整个查询SQL直接发给DBA,让DBA直接帮忙优化了,所以造成的状况就是开发人员对于索引的理解.认识很局限,以下就把我个人对于索引的理解及浅薄认识和大家分享下,希望能解除一些大家的疑惑,一起走出索引的误区 误区1.在表上建立了索引,在查询时用到了索引的列,索引就一定会生效 首先明确下这样的

第1周 SQL Server 如何执行一个查询

原文:第1周 SQL Server 如何执行一个查询         大家好,欢迎来到第1周的SQL Server性能调优培训.在我们进入SQL Server性能调优里枯燥难懂的细节内容之前,我想通过讲解SQL Server如何执行一个查询来建立基础.这个部分非常重要,因为接下来的培训中我们会以这些概念来加深我们对SQL Server的认识. 当我们执行一个查询时,在SQL Server中最重要的组件有哪些,下面这张图片可以给大家一个概观的认识.         可以看到,SQL Server内

只有两个字段用一个sql语句查询出某个学生的姓名、成绩以及在表中的排名_数据库其它

昨天去面试时遇到一个这样的问题: 有一张成绩表,只有两个字段,姓名和成绩.怎样用一个sql语句查询出某个学生的姓名,成绩以及在表中的排名? 一时间我也想不出具体实现,我就提了两种思路:一种是通过join关联一个查询出他排名的sql语句:一种是通过group by来实现. 回答得连自己都觉得有点心虚.请问大家如何实现呢? 假设:表名字为Course,两个字段分别为name和score 实现语句: SELECT 学生,成绩, (SELECT COUNT(*) FROM 表 WHERE a.成绩<=成

T-SQL命令在SQL Server查询中的运用

server 首先需要说明的是这篇文章的内容并不是如何调节SQL Server查询性能的(有关这方面的内容能写一本书),而是如何在SQL Server查询性能的调节中利用SET STATISTICS IO和SET STATISTICS TIME这二条被经常忽略的Transact-SQL命令的. 从表面上看,查询性能的调节是一件十分简单的事.从本质上讲,我们希望查询的运行速度能够尽可能地快,无论是将查询运行的时间从10分钟缩减为1分钟,还是将运行的时间从2秒钟缩短为1秒种,我们最终的目标都是减少运

Microsoft SQL Server 查询处理器的内部机制与结构

摘要:本文介绍了在客户机上处理 Microsoft SQL Server 查询的方式,各种客户机与 SQL Server 的交互方式,以及 SQL Server 在处理客户机程序的请求时需要完成的工作. 简介 Microsoft(R) SQL Server(TM) 内部机制和结构是一个非常大的主题,因此本文仅限于程序开发人员感兴趣的问题,集中研究其他源中没有彻底讨论的问题.在讨论 SQL Server 的结构时,我们主要观察客户机的处理过程,研究不同的客户机程序与 SQL Server 的交互方

用SQL Server查询累计值

有这样一个要求,它要创建一个SQL Server查询,其中包括基于事件时刻的累计值.典型的例子就是一个银行账户,因为你每一次都是在不同的时间去存钱和取钱.对任意一个账户来说,在某个时间点都要算出它的借(存款)和贷(取款)之和.每一笔交易之后,你都想知道当前的余额.列表A创建了这样一个表格的简单的例子. 列表A 下面是一些示例行: 1 2006-11-03 02:33:42.34010000.00 2 2006-11-03 02:34:50.467-500.00 3 2006-11-03 02:3