问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C#代码实现从文件中读出数据在导入到数据库

发布网友 发布时间:2024-09-30 02:15

我来回答

3个回答

热心网友 时间:2024-10-21 09:45

代码如下:

//定义数据连接字符串
        private string connStr = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;
 
        /// <summary>
        /// 用insert方法从文本文件中批量导入到数据库表中
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnInsert_Click(object sender, RoutedEventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();
            ofd.Filter = "文本文档|*.txt";
            //如果用户没有选择文件并确定则直接返回
            if (ofd.ShowDialog() != true)
            {
                return;
            }
            //获得文件名包括路径
            string fileName = ofd.FileName;
 
            try
            {
                //定义一个开始时间
                DateTime startTime = DateTime.Now;
                //因为文件比较大,所有使用StreamReader的效率要比使用File.ReadLines高
                using (StreamReader sr = new StreamReader(fileName, Encoding.Default))
                {
                    using (SqlConnection conn = new SqlConnection(connStr))
                    {
                        conn.Open();
                        using (SqlCommand cmd = conn.CreateCommand())
                        {
                            while (!sr.EndOfStream)
                            {
                                 
                                string readStr = sr.ReadLine();//读取一行数据
                                if (readStr.StartsWith("1"))//去掉标题行
                                {
                                    string[] strs = readStr.Split(new char[] { '\t', '"' }, StringSplitOptions.RemoveEmptyEntries);//将读取的字符串按"制表符/t“和””“分割成数组
 
                                    string startNum = strs[0];
                                    string numArea = strs[1];
                                    string numType = strs[2];
 
                                    cmd.CommandText = "insert into T_PhoneInfo(FStartNum,FNumArea,FNumType) values(@startNum,@numArea,@numType)";
                                    cmd.Parameters.Clear();//清除上一次的参数
                                    cmd.Parameters.Add(new SqlParameter("@startNum", startNum));
                                    cmd.Parameters.Add(new SqlParameter("@numArea", numArea));
                                    cmd.Parameters.Add(new SqlParameter("@numType", numType));
                                    cmd.ExecuteNonQuery();
                                }
                            }
                        }
                    }
 
                }
 
                //结束时间-开始时间=总共花费的时间
                TimeSpan ts = DateTime.Now - startTime;
                MessageBox.Show("导入数据成功!共花费时间:" + ts.ToString());
 
            }
            catch (IOException ex)
            {
                MessageBox.Show(ex.Message);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

热心网友 时间:2024-10-21 09:45

有思路了还有什么难解决的?读出文件流的内容,封装成数组根据“\r\n”分割,然后insert就行了追问渣技术,写不出来代码

热心网友 时间:2024-10-21 09:46

二百分我给弄了。追问没有那么多分

追答 //this.txtSavePath.Text为读取文件的路径。
      FileStream fs = new FileStream(this.txtSavePath.Text, FileMode.Open, FileAccess.Read);
                StreamReader mysr = new StreamReader(fs);
                //可以根据数据库的字段来判断到底是多少,此处根据你的上下文写9
                String[] str = new String[9];
                int i =0;
                string ss = "";
                //当数据可以读取时,进入循环
                while (mysr.BaseStream.CanRead)
                {     
                    //读取前面8个字段值
                    if (i <= 7)
                        str[i] = mysr.ReadLine();
                    else
                    {
                        if (mysr.EndOfStream)
                            break;
                        //读取后面二进制部分的值
                        ss = ss + mysr.ReadLine() + "/";
                    }
                    i++;
                }
                //把读取值赋值给数组,至此结束读取。
                str[8] = ss.TrimEnd('/');
                //估计你也就这里难,插入数据库的部分省略。
                mysr.Close();
                fs.Close();

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
孩子依赖性太强,妈妈怎么办?目录 孩子对妈妈依赖性太强怎么办 介绍权利的游戏里龙之母全名是什么? 澳洲血橙胶原蛋白是玻璃瓶的吗? 梦见母亲侄子妹妹舅妈电话破屋的预兆 梦见坐别人的车什么意思 有多少人去拜过“龙母”,又有几人知道“龙母”是真的存在过 龙母庙地址在哪里? 龙母像地址在哪里? 龙姥姥是龙母娘娘吗 音频管理器怎么往右下角显示 win10怎么调出音频管理器 一个女人有红蓝两种头发疯狂猜成语 九乡风景区有哪些适合亲子游玩的地方? 怎样让音量图标在右下角显示? 九乡风景区主要景观 云南昆明九乡风景区简介 win10 关闭/开启 桌面右下角Realtek(瑞昱)音频管理图标显示_百度... 文斯·卡特个人简介 23号英国脱欧会不会影响中国股市 温州7,23事故对股票的影响 济南钢铁股票从22号的8元多怎么一下跌到了23号的3元多,请问是什么原因... 文斯·卡特职业生涯数据 文斯卡特职业生涯攻守成绩 文斯-卡特职业生涯迄今为止单场最高得分是多少? 卡特目前职业生涯最高分是多少 我想在县里开个6.9的小商品店,去义乌进货划算吗?我要进的货品种挺多的... 临沧6.9休闲零食有哪些 剪映如何保留部分视频原声 澧水河畔美国边际主义学派的价值观念 ...弘强 ,女的叫 兰 。帮我起个成语,短语里面有他们的名字 C#将文本框的字符串存入SQL数据库中,先来个简单点的,谢谢,学到数据库就... 一红一蓝人答错提成语 c#中怎么实现在文本框中输入一条信息,并且通过点击同一个按钮查询两个... 四季豆做法四季豆怎么做好吃 请问怎么把C#文本框里的文字和SQL里的数据互相匹配? C#中使用SQL语句,SQL语句中含有汉字时,应怎样处理? 四季豆怎么做营养又美味? 陈皮的功效与作用_百度拇指医生 怎么把txt导入sql数据库c#代码。按字节读取格式化的txt文本,比如A=B... C#怎么用@符写SQL代码,不用+=连,因为涉及到GO,用@的话文本框的内容要... 四季豆怎么做口感和香气最佳? ...体重68KG能减到45KG 吗,谁有快的方法,最好两个月能完成的,不伤身体... 抖音身份校验失败怎么办? 校园网计费校验失败 火龙果和什么不能一起吃 火龙果不能和什么一起吃 文斯卡特的身高是多少啊? 填空题假如我是老师我将 传授的壮词语是什么 眼睛干涩视力模糊用什么药