首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 求一个循环(遍历语句)100分
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zhangxia_dct
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 揭帖率:
    发表于:2008-05-13 17:17:40 楼主
    我要导入一个有n条纪录的excel表 用程序导入到sql server里
    现在我已经把excel表的内容读到 dataset里
    现在用
    string strSql = "Select * From [" + dr[2].ToString().Trim() + "]";
                            OleDbCommand objCmd = new OleDbCommand(strSql, oledbCon);
                            ODA.SelectCommand = objCmd;
                            ODA.Fill(myds, dr[2].ToString().Trim());
                            DataRowView drv = myds.Tables[dr[2].ToString().Trim()].DefaultView[0];
                                string inname = Convert.ToString(drv.Row["姓名"]);//姓名是excel的列名。
                                string comstr = "insert into cs_xx(usName) values ('"+inname +"')";  string mystr = "Data Source =(local);Database =intelCS ;Integrated Security=SSPI";
            SqlConnection sqlcon = new SqlConnection(mystr  );
            sqlcon.Open();
            //SqlDataAdapter sqlsda = new SqlDataAdapter("select * from cs_xx",sqlcon );
            DataTable indt = myds.Tables.Add();
            string count = "select count(姓名) from [" + dr[2].ToString().Trim() + "]";
                                    OleDbCommand  oledbcom = new OleDbCommand (count, oledbCon);
                                    int i =Convert .ToInt16 ( oledbcom.ExecuteScalar());
                                    if (i == 0)
                                    {
                                        MessageBox.Show("没有数据要导入");
                                    }
                                    else
                                    {

                                        {
                                            SqlCommand mycom = new SqlCommand(comstr, sqlcon);
                                            mycom.ExecuteNonQuery();
                                        }
                                        sqlcon.Close();
                                        MessageBox.Show("导入完毕");
                                    } 逐条写到sql数据库里
    现在每次只能 导入第一条数据。怎样才能遍历datarowview 或dataset 把excel内的10条数据导入进去那谢谢!
    100  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • liyong11111
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-13 17:29:221楼 得分:0
    SQL code
    insert into cs_xx(usName) select usName from [" + dr[2].ToString().Trim() + "]";
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wo594261
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-13 17:34:162楼 得分:0
    帮顶
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zsj830120
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-13 17:39:353楼 得分:0
    foreach(DataRow dRow in myds.Tables[dr[2].ToString().Trim()].Rows)
    {
        string inname = Convert.ToString(drv.Row["姓名"]);//姓名是excel的列名。 
        string comstr = "insert into cs_xx(usName) values ('"+inname +"')";
        string mystr = "Data Source =(local);Database =intelCS ;Integrated Security=SSPI";
    }

    这样试试
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wxg22526451
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-13 17:44:384楼 得分:0
    参考批量更新插入进数据库
    C# code
    SqlDataAdapter dataAdapter = new SqlDataAdapter(SQL, CONNECTION); string insertSQL = "INSERT INTO [Employee]([name], [age]) VALUES(@name, @age)"; SqlCommand insertCmd = new SqlCommand(insertSQL, CONNECTION); insertCmd.Parameters.Add(new SqlParameter("@name", SqlDbType.Char, 32, "name"));//name是DataTable中对应的列名 insertCmd.Parameters.Add(new SqlParameter("@age", SqlDbType.Real, 8, "age")); dataAdapter.InsertCommand = insertCmd; insertCmd.UpdatedRowSource = UpdateRowSource.None; dataAdapter.UpdateBatchSize = 0; dataAdapter.Update(DataTable);
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • selad
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-13 17:57:105楼 得分:0
    引用 3 楼 zsj830120 的回复:
    foreach(DataRow dRow in myds.Tables[dr[2].ToString().Trim()].Rows)
    {
        string inname = Convert.ToString(drv.Row["姓名"]);//姓名是excel的列名。 
        string comstr = "insert into cs_xx(usName) values ('"+inname +"')";
        string mystr = "Data Source =(local);Database =intelCS ;Integrated Security=SSPI"; 
    }

    这样试试


    不知道解决没有,3楼写的没错
    也可以用
    for(int i=0;i <myds.Tables[dr[2].ToString().Trim()].Rows.Count;i++)
    {
        //执行操作
    }
    建议先取出excel的数据集,放入dataset里面
    把插入代码写出一个函数,不要每次都写连接代码,那多麻烦
    写程序要简明,方便
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lovehongyun
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-13 18:02:206楼 得分:0
    try:

    构建一个datatable,把他的行状态全变成add,这样就可以用dataadapter批insert

    DataTable dt = myds.Tables[0];
    foreach (DataRow dr in dt.Rows)
    {
          dr.SetAdded();
    }

    SqlDataAdapter sqlsda = new SqlDataAdapter();
    SqlCommand cmd = new SqlCommand("insert into ....",conn);
    sqlsda.InsertCommand = cmd;

    sqlsda.Update(dt);

    自己试试吧..代码已给出.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • maco_wang
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-13 20:12:387楼 得分:0
    路过~
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zhangxia_dct
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-14 09:37:298楼 得分:0
    呵呵 谢谢 ,马上测试
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zhangxia_dct
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-14 10:18:559楼 得分:0
    回复1楼
    [" + dr[2].ToString().Trim() + "]"  这个表是excel读取过来的,他的数据进内存里的。
    现在要插入的数据是 本地sql server ,所以这个反法不能用。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jasondct
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-14 12:40:5310楼 得分:0
    使用数组,在遍历之
    string[] arr = {Convert.ToString(drv.Row["姓名"])}
    foreach(string ss int arr)
    {
    }
    试试
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • virusplayer
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-14 12:58:2511楼 得分:0
    引用 6 楼 lovehongyun 的回复:
    try:

    构建一个datatable,把他的行状态全变成add,这样就可以用dataadapter批insert

    DataTable dt = myds.Tables[0];
    foreach (DataRow dr in dt.Rows)
    {
    dr.SetAdded();
    }

    SqlDataAdapter sqlsda = new SqlDataAdapter();
    SqlCommand cmd = new SqlCommand("insert into ....",conn);
    sqlsda.InsertCommand = cmd;

    sqlsda.Update(dt);

    自己试试吧..代码已给出.
    方法新颖,不错,学习了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Sandy945
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-14 14:12:3212楼 得分:0
    用不上程序的批量处理~


    SQL code
    insert into [tableName]([columnName]) select [columnName] from [otherTableName]

    就能搞定
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • GengWH
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-14 14:34:2913楼 得分:0
    try:

    构建一个datatable,把他的行状态全变成add,这样就可以用dataadapter批insert

    DataTable dt = myds.Tables[0];
    foreach (DataRow dr in dt.Rows)
    {
    dr.SetAdded();
    }

    SqlDataAdapter sqlsda = new SqlDataAdapter();
    SqlCommand cmd = new SqlCommand("insert into ....",conn);
    sqlsda.InsertCommand = cmd;

    sqlsda.Update(dt);
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zhangxia_dct
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-14 15:27:5314楼 得分:0
    1楼3楼12楼
    的代码 就只能得到。 这个列的第一个行 ,我要遍历的这个列有7行。 
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • mobin4211
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-14 15:36:5815楼 得分:0
    楼上说得很清楚了
    我来接分的
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Sandy945
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-14 15:50:1416楼 得分:0
    引用 14 楼 zhangxia_dct 的回复:
    1楼3楼12楼
    的代码 就只能得到。 这个列的第一个行 ,我要遍历的这个列有7行。 

    晕,是你查出几行加几行的
    你把满足条件的查询语句放在 insert into 后面 就可以的
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zhangxia_dct
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-14 16:07:3817楼 得分:0
    o 是不是我的 遍历出来的数据就一条啊 我再看看
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zhangxia_dct
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-14 16:24:5118楼 得分:0
    怎样把 放在dataset 里,已经方的那个excel 表的内容全全部找出来啊。
    我现在老是找出来一行,  呵呵
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Sandy945
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-14 16:36:2119楼 得分:0
    你说这咋帮你~ 

    先贴下生成的查询SQL 语句
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zhangxia_dct
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-14 16:58:3620楼 得分:0
    OleDbConnection oledbCon = null;
                try
                {
                    string constr = "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=Excel 8.0; Data Source=" + textBox1.Text + "";
                    oledbCon = new OleDbConnection(constr);
                    oledbCon.Open();
                    DataTable SchemDt = oledbCon.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
                    OleDbDataAdapter ODA = new OleDbDataAdapter();
                    DataSet myds = new DataSet();
                    foreach (DataRow dr in SchemDt.Rows)
                    {
                        try
                        {
                            string strSql = "Select * From [" + dr.ToString().Trim() + "]";
                            OleDbCommand objCmd = new OleDbCommand(strSql, oledbCon);
                            ODA.SelectCommand = objCmd;
                            ODA.Fill(myds, dr[2].ToString().Trim());
    这些代码已经把 excel方到dataset里。现在就是把 放到datatset 的那个表(就一个表有数据),读取出来放到 sql server 数据里。(sql server的数据已经建立好了) 非常感谢
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • MMshuozhelihenhuang
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-14 17:08:0421楼 得分:0
    o 那我就接点分好了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Sandy945
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-14 17:20:1722楼 得分:0
    C# code
    string comstr = "insert into cs_xx([usName]) select ["+inname +"] from [" + dr[2].ToString().Trim() + "]";
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Sandy945
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-14 17:22:4323楼 得分:0
    inname 应该为你要添加列 在 dr[2].ToString().Trim() 这个表里的列名
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zhangxia_dct
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-15 11:22:2524楼 得分:0
    谢谢楼上 我马上测试
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zhangxia_dct
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-15 11:52:0325楼 得分:0
    呵呵 哦 这样不行,应为 dr[2].ToString().Trim() 表是dataset的 也就是从excel 里取来的。
    和要插入的数据不是一个数据库,
      string comstr = "insert into cs_xx(usName) select 姓名 from [" + dr[2].ToString().Trim() + "]";
                                            SqlCommand mycom = new SqlCommand(comstr, sqlcon);
    现在要插入的数据库是  sqlcon的 sql server 数据库。
    呵呵。
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved