标题:初学者 求解..批量导入问题,有代码 求补充。
只看楼主
tangkou
Rank: 1
等 级:新手上路
帖 子:55
专家分:7
注 册:2010-7-28
结帖率:57.14%
已结贴  问题点数:10 回复次数:5 
初学者 求解..批量导入问题,有代码 求补充。
程序代码:
 private void 保存图片_Click(object sender, EventArgs e)
        {


             OpenFileDialog ofd = new OpenFileDialog();                //new一个方法
            ofd.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);  //定义打开的默认文件夹位置
            ofd.ShowDialog();          //显示打开文件的窗口
            fileNamePth = ofd.FileName;               //获得选择的文件路径
            textBox1.Text = fileNamePth;
            extendedName = Path.GetExtension(fileNamePth);       //获得文件扩展名
            fileName1 = Path.GetFileName(fileNamePth);           //获得文件名,其实它还包括了扩展名.
            fileName1 = fileName1.Substring(0,fileName1 .Length-4);//截取它的文件名
          
            string cnnstr = "provider=OraOLEDB.Oracle;data source=NJGIS;User Id=sde;Password=gis;";
            OleDbConnection con = new OleDbConnection(cnnstr);
            try
            {
                con.Open();
            }
            catch
            { }

            OleDbCommand cmd = new OleDbCommand(cnnstr, con);

             = CommandType.Text;
             = cnnstr;
            //for (int i=0; i < openFileDialog1.FileNames.Length; i++)
            //{
                FileStream file = new FileStream(fileNamePth, FileMode.Open, FileAccess.Read);
                Byte[] imgByte = new Byte[file.Length];//把图片转成1Byte型二进制流 
                file.Read(imgByte, 0, imgByte.Length);//把二进制流读入缓冲区  

                 = " insert into picture ( id,picda ) values (:id,:picda) ";//正常sql语句插入数据库 
                cmd.Parameters.Add("id", fileName1);
                cmd.Parameters.Add("picda", System.Data.OleDb.OleDbType.Binary, imgByte.Length);

                cmd.Parameters[1].Value = imgByte;
                file.Close();

            //}
          
            try
            {
                cmd.ExecuteNonQuery();
                MessageBox.Show("导入成功");
            }
            catch (System.Exception e1)
            {
                MessageBox.Show("插入错误" + e1);
            }
        }
现在 没有for循环 可以一张一张添加...我想 实现批量上传 不知道怎么修改这段代码...
  希望有高手赐教哇. 不要说我不爱思考,实在是刚学 有些函数不知道怎么用,加之网上很少这个例子(可能自己水平不够)
搜索更多相关主题的帖子: 批量 求解 代码 
2010-08-04 18:42
saitor
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:5
帖 子:373
专家分:1520
注 册:2009-5-18
得分:0 
后台动态创建上传控件,点上传找出页面上的上传控件,进行批量上传。
2010-08-04 19:52
红色警戒
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:19
帖 子:444
专家分:2967
注 册:2005-11-20
得分:2 
在指定目录下遍历文件然后逐个导入

2010-08-04 20:35
zhangkecd
Rank: 2
来 自:闲云工作室
等 级:论坛游民
帖 子:159
专家分:91
注 册:2009-3-13
得分:0 
学习了。

闲云野鹤---梦想  
2010-08-04 23:12
tangkou
Rank: 1
等 级:新手上路
帖 子:55
专家分:7
注 册:2010-7-28
得分:0 
回复 2楼 saitor
什么控件 叫什么 ? 还有种控件的啊?
2010-08-05 10:20
Anne_Zhang
Rank: 2
等 级:论坛游民
威 望:1
帖 子:27
专家分:94
注 册:2010-4-10
得分:8 
下面大致写了一个导入多个文件的方法,可以参考一下,参数为多个文件路径的一个集合,调用这个方法即可
public void SaveFile(List<string> filePathList)
{
    if(filePathList!=null)
   {
            string cnnstr = "provider=OraOLEDB.Oracle;data source=NJGIS;User Id=sde;Password=gis;";
            OleDbConnection con = new OleDbConnection(cnnstr);
            try
            {
                con.Open();
            }
            catch
            { }

            OleDbCommand cmd = new OleDbCommand(cnnstr, con);

             = CommandType.Text;
             = cnnstr;
        for(int i=0;i<filePathList.Count;i++)
        {
           string fileNamePth = filePathList[i];               //获得选择的文件路径
           string extendedName = Path.GetExtension(fileNamePth);       //获得文件扩展名
           string fileName1 = Path.GetFileName(fileNamePth);           //获得文件名,其实它还包括了扩展名.
            fileName1 = fileName1.Substring(0,fileName1 .Length-4);//截取它的文件名
         
                FileStream file = new FileStream(fileNamePth, FileMode.Open, FileAccess.Read);
                Byte[] imgByte = new Byte[file.Length];//把图片转成1Byte型二进制流
                file.Read(imgByte, 0, imgByte.Length);//把二进制流读入缓冲区  

                = " insert into picture ( id,picda ) values (:id,:picda) ";//正常sql语句插入数据库
                cmd.Parameters.Add("id", fileName1);
                cmd.Parameters.Add("picda", System.Data.OleDb.OleDbType.Binary, imgByte.Length);

                cmd.Parameters[1].Value = imgByte;
                file.Close();         
            try
            {
                cmd.ExecuteNonQuery();
            }
            catch (System.Exception e1)
            {
                MessageBox.Show("插入错误" + e1);
                break;
            }
        }
    }
}
2010-08-05 16:56



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-314832-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.123160 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved