0.数据库连接

  private void button1_Click(object sender, EventArgs e)
{
this.btnUpdate.Enabled = false;
#region 数据库连接
connStr.Append("Data Source=");
connStr.Append(txtServer.Text);
connStr.Append(";");
connStr.Append("Initial Catalog=");
connStr.Append(txtDataBase.Text);
connStr.Append(";");
connStr.Append("User ID=");
connStr.Append(txtUser.Text);
connStr.Append(";");
connStr.Append("Password=");
connStr.Append(txtPass.Text);
this.labShow.Text = "正在查找文件......";
using (SqlConnection conn = new SqlConnection(connStr.ToString()))
{
//MessageBox.Show(connStr.ToString());
ListSql = new List<string>();
ListMdb = new List<string>();
GetDirectories(Application.StartupPath);
//ListSql.Sort(new MySort()); foreach (var item in ListSql)
{
GetSqlFile(item);
}
foreach (var item in ListMdb)
{
ReadDataToSQL(item);
}
MessageBox.Show("升级成功......");
this.btnUpdate.Enabled = true;
Application.Exit();
}
#endregion }

1.查找文件与目录

  #region 查找目录与文件
public void GetDirectories(string path)
{ string[] fileNames = Directory.GetFiles(path);
string[] directories = Directory.GetDirectories(path);
foreach (string file in fileNames)
{
string str = System.IO.Path.GetFullPath(path);
if (System.IO.Path.GetExtension(file).ToLower() == ".sql")
{
ListSql.Add(file);
//GetSqlFile(file);
}
if (System.IO.Path.GetExtension(file).ToLower() == ".mdb")
{
//ReadDataToSQL(file);
ListMdb.Add(file);
}
} foreach (string dir in directories)
{
GetDirectories(dir);
}
}
#endregion

2.获取本地脚本文件、执行sql文件

  foreach (var item in ListSql)
{
GetSqlFile(item);
}
 #region 批量执行本地的sql文件到sqlServer数据库
/// <summary>
/// 获取本地的脚步文件
/// </summary>
private void GetSqlFile(string path)
{
try
{
string obj_file = this.GetFileReader(path);
obj_file = obj_file.Replace("GO", " | ").Replace("go", " | ");//替换符号
string[] obj_filelist = obj_file.Split('|');
foreach (string str in obj_filelist)
{
this.labShow.Text ="正在执行脚本"+ Path.GetFileName(path)+"文件......";
this.ExecSQL(str);
}
// MessageBox.Show("导入成功!", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
catch
{ }
}
/// <summary>
/// 获取文件内容
/// </summary>
/// <param name="path">文件路径</param>
/// <returns>返回sql文件的执行语句</returns>
public string GetFileReader(string path)
{
try
{
using (StreamReader sr = new StreamReader(path, Encoding.Default))
{
String line = sr.ReadToEnd(); return line;
}
}
catch (Exception ex)
{
return "";
}
}
/// <summary>
/// 执行SQL
/// </summary>
/// <param name="SQL"></param>
public void ExecSQL(string SQL)
{
try
{
using (SqlConnection conn = new SqlConnection(@"Data Source=(local);Initial Catalog=数据库名称;User ID=用户名;Password=密码"))
{
conn.Open();
using (SqlCommand cmd = new SqlCommand(SQL, conn))
{
cmd.CommandType = CommandType.Text;
cmd.ExecuteNonQuery();
}
conn.Close();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message + "|" + ex.Source); }
}
#endregion

3.获取mdb本地文件,执行读取与插入操作

 #region 批量执行本地的mdb文件到sqlServer数据库
/// <summary>
///读取access数据库中的数据并插入到sqlServer数据库表中
/// </summary>
/// <param name="file">文件路径</param>
private void ReadDataToSQL(string file)
{
try
{
this.labShow.Text = "正在执行脚本" + Path.GetFileName(file) + "文件......";
string StrConn = "Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password=;Data source=" + file + "";
OleDbConnection adoConn = new OleDbConnection(StrConn);
//adoConn.ConnectionString = StrConn;
adoConn.Open();
DataTable dt = adoConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
for (int i = ; i < dt.Rows.Count; i++)
{
String tableName = dt.Rows[i]["TABLE_NAME"].ToString(); //从ACCESS数据库查询数据
string sql1 = "select * from " + tableName;
DataSet Myds = new DataSet();
OleDbDataAdapter dataAdapter = new OleDbDataAdapter(sql1, adoConn);
//填充数据
dataAdapter.Fill(Myds, tableName);
//插入数据
BulkData(Myds, tableName);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
/// <summary>
/// 执行Sql语句
/// </summary>
/// <param name="_Ds">DataSet数据集</param>
/// <param name="_TableName">表名称</param>
/// <returns>是否成功</returns>
public bool BulkData(DataSet _Ds, string _TableName)
{
SqlConnection SqlCon = new SqlConnection();
SqlCon.ConnectionString = connStr.ToString();
SqlCon.Open();
SqlBulkCopy SqlBulk = new SqlBulkCopy(SqlCon);
SqlBulk.DestinationTableName = _TableName;
try
{
SqlBulk.WriteToServer(_Ds.Tables[], DataRowState.Unchanged);
return true;
}
catch(Exception ex)
{
MessageBox.Show(ex.ToString());
return false;
}
finally
{
SqlCon.Close();
SqlCon.Dispose();
SqlBulk.Close();
}
}
#endregion

winform 批量导入本地sql文件,批量导入mdb(access)文件到sqlserver的更多相关文章

  1. phpMyAdmin导入本地数据库

    phpMyAdmin导入本地数据库 在PHPMyAdmin导入数据时,点击导入--执行后出现错误: 您可能正在上传很大的文件,请参考文档来寻找解决方法. 可能就是因为数据库太大的原因. 那么如何 才能 ...

  2. Oracle:从SQL文件批量导入数据

    进入DOS界面. 进入SQL文件目录. 在命令提示下运行SqlPlus,c:\sql>sqlplus user_name/password@net_service_name 指定SQL执行日志文 ...

  3. sql文件批量导入mysql数据库

    有一百多个sql文件肿么破?一行一行地导入数据库肯定是极其愚蠢的做法,但是我差点就这么做了... 网上首先找到的方法是:写一个xxx.sql文件,里边每一行都是source *.sql ...,之后再 ...

  4. 批量将制定文件夹下的全部Excel文件导入微软SQL数据库

    以下代码将c:\cs\文件夹下的全部Excle中数据导入到SQL数据库 declare @query vARCHAR(1000) declare @max1 int declare @count1 i ...

  5. SQL Server批量数据导出导入Bulk Insert使用

    简介 Bulk insert命令区别于BCP命令之处在于它是SQL server脚本语句,它可以将本地或远程的文件数据批量导入数据库,速度非常之快:远程文件必须共享才行, 文件路径须使用通用约定(UN ...

  6. ABAP-2-会计凭证批量数据导入本地ACCESS

    ABAP-1-会计凭证批量数据导入本地ACCESS 上一版本出现问题: A.若TXT数据条目超过800万(大概1.3G),则将TXT导入ACCESS过程不成功,ACCESS数据表为空.(Access单 ...

  7. ABAP-1-会计凭证批量数据导入本地ACCESS

    公司会计凭证导入ACCESS数据库,需要发送给审计,原先的方案是采用DEPHI开发的功能(调用函数获取会计凭证信息,然后INSERT到ACCESS数据表),运行速度非常慢,业务方要求对该功能进行优化, ...

  8. 项目一:第四天 1、快递员的条件分页查询-noSession,条件查询 2、快递员删除(逻辑删除) 3、基于Apache POI实现批量导入区域数据 a)Jquery OCUpload上传文件插件使用 b)Apache POI读取excel文件数据

    1. 快递员的条件分页查询-noSession,条件查询 2. 快递员删除(逻辑删除) 3. 基于Apache POI实现批量导入区域数据 a) Jquery OCUpload上传文件插件使用 b) ...

  9. Windows Server2003本地用户的批量导入和导出(转)

    AD域环境的用户导入和导出 Windows server 2003 批量导入用户---CSVDE 在新搭建的域环境中,有许多的域帐号需要导入,可以采用csvde命令来导入域用户:新建一个txt文本文件 ...

随机推荐

  1. LeetCode26 Remove Duplicates from Sorted Array

    题目: Given a sorted array, remove the duplicates in place such that each element appear only once and ...

  2. IOS 关于ipad iphone5s崩溃 解决

    之前 我这一直没有以上两款测试机  于是发布被退回了.说是这两款 开启动就崩. 这种情况下 解决办法只有一个,就是bug重现,不然,你根本无法确定再一次提交是否是安全的.所以我借了一台 iPad mi ...

  3. oc语言复制视频文件

    void copyFile() { NSString *home=NSHomeDirectory(); NSString *path=[NSString stringWithFormat:@" ...

  4. How to installation V145 Renault CAN Clip diagnostic software

    Eobd2.fr has launched the new 2015 V145 Renault CAN Clip diagnostic tool (SP19-A and SP19-B). Here i ...

  5. 【Mood-18】github 使用指南

    windows下使用教程: http://www.cnblogs.com/dongdong230/p/4211221.html repository not found error问题解决(需确定gi ...

  6. Linux下VI的使用

    vi使用手册 VI是unix上最常用的文本编辑工具,作为unix软件测试人员,有必要熟练掌握它.进入vi的命令 vi filename :打开或新建文件,并将光标置于第一行首 vi +n filena ...

  7. PF防火墙

    PF防火墙 点击认领       PF防火墙 ( 全称:Packet Filter ) 是 UNIX LIKE 系统上进行 TCP/IP 流量过滤和网络地址转换的软件系统.PF 同样也能提供 TCP/ ...

  8. JNA参数传递问题,Java数组

    版权声明:本文为博主原创文章,未经博主允许不得转载. 本文主要讲述使用JNA模拟结构体并将结构体数组作为参数传递给对应的方法. C语言结构体定义如下: typedef struct Rect { in ...

  9. ASP.NET缓存全解析3:页面局部缓存 转自网络原文作者李天平

    有时缓存整个页面是不现实的,因为页的某些部分可能在每次请求时都需要变化.在这些情况下,只能缓存页的一部分.顾名思义,页面部分缓存是将页面部分内容保存在内存中以便响应用户请求,而页面其他部分内容则为动态 ...

  10. Part 1 What is SSMS?

    note that,SSMS is a client tool and not the server by itself,it is a developer machines connects to ...