您的位置:首页 > 数据库

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

2013-08-31 23:36 761 查看
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();

                }

            }
        }
    }

       
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐