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. 关于在线查看相关开源源码的网站,包括Android源码

    无废话,纯干货! 各种源码自行搜索: http://grepcode.com/ Android源码:http://grepcode.com/project/repository.grepcode.co ...

  2. LeetCode15 3Sum

    题意: Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find al ...

  3. storm0.9.0.1安装

    storm 0.9.x的好处是引入了netty进行网络传输(需要配置),不用再依赖zeromq和jzmq了 1.下载安装zookeeper ... 2.下载安装storm依赖库 JDK1.6及以上 . ...

  4. matlab 和 origin作图去除白边,字体调节

    一 matlab作图 (1)在图形文件figure的菜单上点击file->export setup, 在size选项中,对"expand axes to fill figure&quo ...

  5. 02. SQL表达式的灵活使用

    什么是SQL表达式?在SQL语句中,表达式可以是函数,也可以是列和列之间的混合运算.很多时候,对于表达式的使用,可以比单独操作表上的列,带来更多方便. 一. 在HAVING中使用表达式 --drop ...

  6. UVA 113 Power of Cryptography (数学)

    Power of Cryptography  Background Current work in cryptography involves (among other things) large p ...

  7. Linux 网卡驱动设备程序设计(1)

    一.网卡驱动架构分析 1. Linux 网络子系统 #系统调用接口层 为应用程序提供访问网络子系统的统一方法. #协议无关层 提供通用的方法来使用传输层协议. #协议栈的实现 实现具体的网络协议 #设 ...

  8. GUID (全局唯一标识符)

         全局唯一标识符(GUID,Globally Unique Identifier)是一种由算法生成的二进制长度为128位的数字标识符.GUID主要用于在拥有多个节点.多台计算机的网络或系统中. ...

  9. C++之linux下文件结构实现

    /********** huangsy13@gmail.com FileStruct.h **********/ #ifndef FILESTRUE #define FILESTRUE   #incl ...

  10. Matlab之文件操作

    1.判断是否存在文件夹:if (exist(folderName,'dir')) 2.创建文件夹:mkdir(folderName) 3.删除文件夹:rmdir(folderName,'s') 4.当 ...