从文件夹目录下导入所有指定文件类型的数据内容到数据库表

namespace 从文件夹导入文件夹中所以数据

{

    public partial class Form1 : Form

    {

        publicForm1()

        {

            InitializeComponent();

        }

 

        privatevoid button1_Click(objectsender,EventArgs e)

        {

            //FolderBrowserDialog此类提供一种方法,它提示用户浏览、创建并最终选择一个文件夹。如果只允许用户选择文件夹而非文件,则可使用此类。文件夹的浏览通过树控件完成。只能选择文件系统中的文件夹;不能选择虚拟文件夹。

            FolderBrowserDialogdlg =newFolderBrowserDialog();

            if(dlg.ShowDialog ()!=DialogResult.OK)

            {

                return;

            }

            //获取或设置用户选定的路径

            stringpath = dlg.SelectedPath;

 

 

 

            //为防止重复把文件夹中的数据导入到数据,导入前先把表(Phone)中信息全部清除掉

            using(SqlConnection conn =newSqlConnection("data source=凡斌-VAIO;Initialcatalog=DBPromary;integrated security=true"))

            {

                conn.Open();

                using(SqlCommand cmd = conn.CreateCommand())

                {

                    cmd.CommandText = "delete from Phone";

                    cmd.ExecuteNonQuery();

                }

            }

            // Directory类用于典型操作,如复制、移动、重命名、创建和删除目录。也可将 Directory类用于获取和设置与目录的创建、访问及写入操作相关的 DateTime信息。由于所有的 Directory方法都是静态的,所以如果只想执行一个操作,那么使用 Directory方法的效率比使用相应的 DirectoryInfo实例方法可能更高。大多数 Directory方法要求当前操作的目录的路径。

            //Directory.GetFiles(stringpath,string searchPattern,SearchOption searchOption)。注意Directory.GetFiles()方法返回的是一个string[]数组类型。你想想,一个目录下是有许多文件的,需要用数组才能存放嘛。所以返回的是一个数组类型。Directory.GetFiles()方法可以带一个参数,两个,或者三个参数。

            //stringpath:是返回指定目录中文件的路径。string searchPattern:指定的搜索模式匹配的文件类型。SearchOption searchOption:指定是搜索当前目录还是搜索当前目录及其所以子目录

            string[]files = Directory.GetFiles(path, "*.txt", SearchOption.AllDirectories);

            foreach(string fileinfiles)

            {

                //返回不具有扩展名的指定路径字符串的文件名。注意Path类有多个方法哦。可以达到各种效果,想要扩展名有扩展名。等等。方法多多哦。

                string获取目录下的各个文件名 =Path.GetFileNameWithoutExtension(file);

                //MessageBox.Show(获取目录下的各个文件名);测试一下效果而已

 

 

                //下面开始读取文件了之前我是采用StreamReader来读取,下面我用File .ReadAllLines方法来读取。(文件大的话就用StreamReader(因为不管文件多大,StreamReader都是每次只读取其中一行,基本上不会影响内存的占用),文件小的话就用File .ReadAllLines,因为文件小一次性添加文件的所有行也不会占用多少内存)

                string[]lines = File.ReadAllLines(file,Encoding.Default);

                foreach(string lineinlines)

                {

                    string[]str = line.Split(newchar[]{' ', '\t'},StringSplitOptions.RemoveEmptyEntries);

                    stringHaoDuan = str[0];

                    stringArea = str [1];

                    stringOperators = str [2];

                    stringAreaCode = str [3];

                    using(SqlConnection conn =newSqlConnection("data source=凡斌-VAIO;Initialcatalog=DBPromary;integrated security=true"))

                    {

                        conn.Open();

                        using (SqlCommand cmd =conn.CreateCommand())

                        {

                            cmd.CommandText = "insert into Phone(HaoDuan,Area,Operators,AreaCode)values(@HaoDuan,@Area,@Operators,@AreaCode)";

                            cmd.Parameters.Add(newSqlParameter("HaoDuan", HaoDuan));

                            cmd.Parameters.Add(newSqlParameter("Area", Area));

                            cmd.Parameters.Add(newSqlParameter("Operators", Operators));

                            cmd.Parameters.Add(newSqlParameter("AreaCode", AreaCode));

                            cmd.ExecuteNonQuery();

                        }

                    }

                }

               

              

            }

            MessageBox.Show("导入完毕");

          

        }

    }

}

 



2014年3月11日改进版的

App.config配置文件

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <connectionStrings>
    <add name="getConn" connectionString="Data source=凡斌-VAIO;Initial catalog=sales;integrated security=true"/>
  </connectionStrings>
</configuration>

Form1.cs(双击buttion1导入按钮)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Configuration;
using System.Data.SqlClient;


namespace 数据的导入导出
{
    
    public partial class Form1 : Form
    {
        
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e) //打开一个文件夹,将文件夹下的所有文件(当前文件夹,或者当前文件夹及其子文件夹)导入数据库表
        {
            FolderBrowserDialog folder = new FolderBrowserDialog();//《1》此类提供一种方法,它提示用户浏览、创建并最终选择一个文件夹。如果只允许用户选择文件夹而非文件,则可使用此类
            
            if (folder.ShowDialog() != DialogResult.OK) //点击导入按钮,会弹出一个对话框,让用户选择文件夹,如果用户选择文件夹后点击了取消而没按确定按钮,就结束程序
            {
                return;
            }
            string path = folder.SelectedPath; //《2》获取选定文件夹的路径


            string[] filesAll = Directory.GetFiles(path, "*.txt", SearchOption.AllDirectories);//《3》获取指定目录(文件夹)中文件的名称,该获取方式的参数有("打开的文件名路径","文件名的扩展名","是搜索当前目录,还是搜索当前目录及其所以子目录")

            Tsql.ExecuteNonQuery("delete from T_users"); //将数据文件导入数据库表之前,先清空一下表里的数据,以免重复导入。

            foreach (string files in filesAll)  //《4》遍历文件夹中所有的选中文件
            {
                
                string[] lines = File.ReadAllLines(files,Encoding.Default);//《5》打开文件,一行一行的读取所有行后关闭该文件(先读一个文件,读完第一个文件的内容后就开始读第二个文件的内容,直到读完最后一个)

                foreach (string line in lines)  //一行一行的遍历文件的内容
                {
                    string []getline = line.Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries);
                    string userName = getline[0];
                    string password = getline[1];
                    
                    Tsql.ExecuteNonQuery("insert into T_users(userName,Password) values('" + userName + "','" + password + "')");
                }
                
            }
            label1.Text = "文件夹文件导入成功";

        }

        private void button2_Click(object sender, EventArgs e)       //打卡一个文件,并将文件内容导入到数据库表
        {
            OpenFileDialog openfile = new OpenFileDialog(); //使用此类可检查某个文件是否存在 并打开该文件
            if (openfile.ShowDialog() != DialogResult.OK) //弹出一个窗口,如果用户点击了窗口的取消按钮,则结束程序
            {
                return;
            }
            Tsql.ExecuteNonQuery("delete from T_users");   //在导入数据前先清空数据表,以免重复导入

            string [] file = File.ReadAllLines(openfile.FileName,Encoding.Default); //读取选中的的文件
            foreach (string lines in file)  //遍历文件内容
            {
                string[] line = lines.Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries);
                string userName = line[0];
                string password = line[1];

                //将数据分割好的内容插入数据库表
                Tsql.ExecuteNonQuery("insert into T_users (userName,Password)values('" + userName + "','" + password + "')");
            }
            label1.Text = "数据文件导入成功";


        }
    }


    class GetConn      //获取数据库连接字符串
    {
        public static string getConn()
        {
            string getConn = ConfigurationManager.ConnectionStrings["getConn"].ConnectionString;
            return getConn;
        }
    }
    class Tsql  //插入,删除,更新数据库
    {
        public static void ExecuteNonQuery(string sql)
        {
            GetConn.getConn();
            using (SqlConnection conn = new SqlConnection(GetConn.getConn()))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = sql;
                    cmd.ExecuteNonQuery();

                }

            }
        }
    }

       
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值