DATASET 批量插入数据库 (救人如救火啊)

rainxieyue 2009-01-07 11:47:27
大哥们告诉我吧!~
怎么在ASP.NET里把dataset的数据一次性批量插入到数据库吧!~
给我一个可以运行而且插的到数据库的实例吧!~
谢谢啦
问题解决马上给分!~
(一定要确实可性的啊!~我网上看了很多都是插不到数据库哎!~)
我是要插入不是更新
谢谢了谢谢啦!~
我快不行了
哎!~
...全文
844 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
HDNGO 2009-01-08
  • 打赏
  • 举报
回复

string sqlconn = "server=127.0.0.1;user id=sa;password=123;database=test;";
SqlDataAdapter ad = new SqlDataAdapter("select Name,code,NickName,Title,http from wind where 1<>1", sqlconn);//取个结构
DataTable dt = new DataTable();
SqlCommandBuilder cmb = new SqlCommandBuilder(ad);//这一句很关键,必不可少。
ad.Fill(dt);
//由于没有XLS数据,自己凑了一行数据出来,你那块这里直接写你的就成
//凑数据开始
DataTable dtSouce = new DataTable();
dtSouce.Columns.Add("Name",typeof(string));
dtSouce.Columns.Add("code", typeof(string));
dtSouce.Columns.Add("NickName", typeof(string));
dtSouce.Columns.Add("Title", typeof(string));
dtSouce.Columns.Add("http", typeof(string));

DataRow drSouce = dtSouce.NewRow();
drSouce["Name"] = "aaa";
drSouce["code"] = "123";
drSouce["NickName"] = "fff";
drSouce["Title"] = "eee";
drSouce["http"] = "ccc";
dtSouce.Rows.Add(drSouce);
//凑数据结束
//你可以用你的DataTable dtSouce = xls_to_dtab(FileUpload1.PostedFile.FileName).Tables[0];
//来代替上边的开始到结束

for (int i = 0; i < dtSouce.Rows.Count; i++)
{
DataRow dr = dt.NewRow();
dr["Name"] = dtSouce.Rows[i][0].ToString();
dr["code"] = int.Parse(dtSouce.Rows[i][1].ToString());//对int进行转型~
dr["NickName"] = dtSouce.Rows[i][2].ToString();
dr["Title"] = dtSouce.Rows[i][3].ToString();
dr["http"] = dtSouce.Rows[i][4].ToString();
dt.Rows.Add(dr);
}
ad.Update(dt);
Console.WriteLine("OK");
Console.Read();
rainxieyue 2009-01-08
  • 打赏
  • 举报
回复
CREATE TABLE[wind](
[id] [int] IDENTITY(1,1)PRIMARY KEY NOT NULL,
[Name] [varchar](20) COLLATE Chinese_PRC_CI_AS NULL,
[code] [int] NULL,
[NickName] [varchar](20) COLLATE Chinese_PRC_CI_AS NULL,
[Title] [varchar](20) COLLATE Chinese_PRC_CI_AS NULL,
[http] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL
)
还有个是XLS文件里读出来的
文件里数据是
sadsad 213 xcxz xccxz zxcxz
asd 23 xczc asd cxzcs
cxzc 421 cxzcs dwcx zxcxzc
csacsa 532 cxzcsa ewdxzcx xzcsdsaca
rainxieyue 2009-01-08
  • 打赏
  • 举报
回复
dtt.Rows.Add(dt.Rows[i].ItemArray);
我解决了
可是记录依然没有添加到数据库里啊~!
这是怎么会事呀?
能帮我下么
HDNGO 2009-01-08
  • 打赏
  • 举报
回复
你的两个表的结构给我看看~
rainxieyue 2009-01-08
  • 打赏
  • 举报
回复
我在线等你的消息大哥一定帮帮忙哦
rainxieyue 2009-01-08
  • 打赏
  • 举报
回复
大哥我按你的方法写了
可是表里如果又有INT又有varchar
就会报输入字符串的格式不正确。
我给你看下我的代码你看能不能
把一个TABLE的ROW直接附给另一个TABLE


SqlConnection conn = new SqlConnection(str);
conn.Open();
SqlDataAdapter da = new SqlDataAdapter("select top 1 * from wind where 1<>1", conn);
DataTable dt = xls_to_dtab(FileUpload1.PostedFile.FileName).Tables[0];
DataTable dtt = new DataTable();
da.Fill(dtt);
SqlCommandBuilder cmd = new SqlCommandBuilder(da);
da.Fill(dt);
for (int i = 1; i < dt.Rows.Count; i++)
{
dtt.Rows.Add(dt.Rows[i].ToString());
}
da.Update(dtt);
HDNGO 2009-01-08
  • 打赏
  • 举报
回复
ad.Fill(dt);//这句的时候,DataTable是空的~

ad.Update(dt);//这个时候,已经ADD了10条数据在DataTable里了~

这个时候,Update就可以把数据插入了~
HDNGO 2009-01-08
  • 打赏
  • 举报
回复
给你我的测试过程~~

1.建立表test~表中只有一列ID,int型~

2.建立控制台项目InsertData~

3.代码如下~


using System;
using System.Collections.Generic;
using System.Text;
using System.Data.SqlClient;
using System.Data;

namespace InsertData
{
class Program
{
static void Main(string[] args)
{
string sqlconn = "server=127.0.0.1;user id=sa;password=xxx;database=test;";
SqlDataAdapter ad = new SqlDataAdapter("select top 1 * from test where 1<>1", sqlconn);//取个结构
DataTable dt = new DataTable();
SqlCommandBuilder cmb = new SqlCommandBuilder(ad);//这一句很关键,必不可少。
ad.Fill(dt);
for (int i = 1; i < 10; i++)
{
DataRow dr = dt.NewRow();
dr["id"] = i;
dt.Rows.Add(dr);
}
ad.Update(dt);
Console.WriteLine("OK");
Console.Read();
}
}
}


运行后test表中有10行新加入数据~


OVER~
rainxieyue 2009-01-08
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 HDNGO 的回复:]
C# codeSqlDataAdapter ad=newSqlDataAdapter("select top 1 * from users where 1<>1", sqlconn);//取个结构DataTable dt=newDataTable();
SqlCommandBuilder cmb=newSqlCommandBuilder(ad);//这一句很关键,必不可少。ad.Fill(dt);inti;for(i=1; i<10; i++)
{
DataRow dr=dt.NewRow();
dr["uid"]="nid"+i.ToString();
dt.Rows.Add(dr);

[/Quote]
我是要将一个DATASET里的数据导进去请问我有数据的DATASEY怎么给他?
这个ad.Update(dt)里的dt不是从数据取出的结构吗?~1
麻烦你讲的在详细点好吗
搞定马上给分
HDNGO 2009-01-07
  • 打赏
  • 举报
回复
先用1<>1的条件做个空的DS,这样你就不用手动做一个DataTable了~~

数据弄脏以后,Update就可以插入了~
HDNGO 2009-01-07
  • 打赏
  • 举报
回复

SqlDataAdapter ad = new SqlDataAdapter("select top 1 * from users where 1<>1", sqlconn);//取个结构
DataTable dt = new DataTable();
SqlCommandBuilder cmb = new SqlCommandBuilder(ad);//这一句很关键,必不可少。
ad.Fill(dt);
int i;
for (i = 1; i < 10; i++)
{
DataRow dr = dt.NewRow();
dr["uid"] = "nid" + i.ToString();
dt.Rows.Add(dr);
}
ad.Update(dt);
rainxieyue 2009-01-07
  • 打赏
  • 举报
回复
我数据库里的字段不全是字符串类型的有INT的
如果把分解成一条条的SQL语句我要怎么去转换字段类型啊~!

62,052

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧