从文件夹目录下导入所有指定文件类型的数据内容到数据库表
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配置文件
Form1.cs(双击buttion1导入按钮)
{
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(); } } } } }
相关文章推荐
- 用封装的方法实现从文件夹名下所有的指定类型文件数据导入到数据库
- C#-文件复制到指定目录和复制文件夹中的所有数据
- SAS程序:将目录下的所有指定格式的数据文件导入SAS
- 列出指定目录下的所有文件和文件夹及子文件的内容
- sql server 文件夹下的所有txt文件内容导入到数据库表中;远程备份到服务器
- 在当前目录中所有文件中,查找,存在指定内容的指定文件类型
- Python_删除/创建指定目录及其下所有子目录的文件,该文件记录当前文件夹的内容
- 利用存储过程读指定文件夹里所有txt文件,将数据插入数据库中
- Python_删除/创建指定目录及其下所有子目录的文件,该文件记录当前文件夹的内容
- HDFS练习5-----删除指定目录下的所有的空文件和空文件夹(包含子文件夹下的内容)
- C# 遍历指定目录下的所有文件及文件夹以及遍历数据库的方法
- 这是一个定时脚本,主要功能是遍历该文件夹下的所有文件并存储到数组,对数据中的文件进行操作,一个一个移动到指定的目录下,并删除原有文件
- kettle读取文件目录下的数据结构一致的所有数据文件信息和内容
- Java新建目录、新建文件、删除文件、删除文件夹、删除文件夹里面的所有文件、复制整个文件夹内容
- 通过递归查询指定目录下的所有文件和子文件夹下的指定文件名
- Python 批量删除文件夹下面指定类型的所有文件
- shell统计指定目录下所有文件类型及数量
- 更新数据库所有表的某一个指定字段 ,附加对‘将 varchar 值转换为数据类型为 int 的列时发生语法错误’处理方法
- Python 实现在对一个目录下所有文件,指定某一行之后添加内容(批处理脚本)
- ACCESS中查询语句:查询所得数据另存到一个指定目录下的文件夹里,并新建新的文件