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();
}
}
}
}
}