调用代码:

string tableName = "Sheet1";
openFileDlg.ShowDialog();
DataTable dt = GeneralFun.FileToDataTable(openFileDlg.FileName, tableName);//将文件转换成对象
dataGridView1.DataSource = dt; String desConnString = ConnSql.GetConnStr("192.168.1.61", "sa", "bdyh", "tm_base_sys", ""); GeneralFun.DataTableToSql(dt, tableName, desConnString);

操作SQL数据库类:

using System;
using System.Collections.Generic;
using System.Text;
using System.Data.SqlClient;
using System.Data;
using System.Collections; /// <summary>
/// SQL数据库操作类
/// zouhao
/// 2011.5.10
/// </summary>
public class ConnSql
{
//获得数据库连接字符串
public static string connString = "";
public static string GetConnStr(string serverName, string userId, string password, string dbName)
{
connString = @"Persist Security Info=False;User ID=" + userId + ";Password=" + password + ";Initial Catalog=" + dbName + ";Server=" + serverName;
return connString;
} public static string GetConnStr(string serverName, string userId, string password, string dbName, string timeOut)
{
connString = @"Persist Security Info=False;User ID=" + userId + ";Password=" + password + ";Initial Catalog=" + dbName + ";Server=" + serverName + ";Connection Timeout=" + timeOut;
return connString;
} /// <summary>
/// 判断数据库是否连接成功
/// </summary>
/// <returns>true</returns>
public static bool Connect()
{
return Connect(connString);
} /// <summary>
/// 判断数据库是否连接成功
/// </summary>
/// <param name="_connstring"></param>
/// <returns>true</returns>
public static bool Connect(string _connString)
{
using (SqlConnection con = new SqlConnection(_connString))
{
try
{
con.Close();
con.Open();
return true;
}
catch (Exception e)
{
e.Message.ToString();
con.Close();
//throw new Exception(e.Message);
return false; }
finally
{
con.Close();
}
} } /// <summary>
/// 打开数据集
/// </summary>
/// <param name="sql"></param>
/// <returns>数据集DataTable</returns> public static DataTable Open(string sql)
{
return Open(sql, connString);
} /// <summary>
/// 打开数据集
/// </summary>
/// <param name="sql"></param>
/// <param name="_connstring"></param>
/// <returns>数据集DataTable</returns>
///
public static DataTable Open(string sql, string _connString)
{ DataTable dt = new DataTable();
if (sql.Equals(""))
{
return null;
}
using (SqlConnection con = new SqlConnection(_connString))
{
try
{
con.Close();
con.Open();
SqlCommand cmd = new SqlCommand(sql,con);
//SqlCommand cmd = new SqlCommand(sql, con);
SqlDataAdapter oda = new SqlDataAdapter(cmd);
oda.Fill(dt);
cmd.Dispose();
return dt;
}
catch (Exception e)
{
con.Close();
//return null;
throw new Exception(e.Message);
}
finally
{
con.Close();
}
}
} /// <summary>
/// 返回查询结构集个数
/// </summary>
/// <param name="sql"></param>
/// <param name="_connstring"></param>
/// <returns>结果集个数</returns> public static int RecordCount(string sql)
{
return RecordCount(sql, connString);
} /// <summary>
/// 返回查询结果集个数
/// </summary>
/// <param name="sql"></param>
/// <param name="_connstring"></param>
/// <returns>结果集个数</returns>
///
public static int RecordCount(string sql, string _connString)
{
DataTable dt = new DataTable();
using (SqlConnection con = new SqlConnection(_connString))
{
try
{
con.Close();
con.Open();
SqlCommand cmd = new SqlCommand(sql, con);
SqlDataAdapter oda = new SqlDataAdapter(cmd);
oda.Fill(dt);
cmd.Dispose();
con.Close();
return dt.Rows.Count;
}
catch (Exception e)
{
con.Close();
//return -1;
throw new Exception(e.Message); }
finally
{
con.Close();
} }
} /// <summary>
/// 执行SQL语句
/// </summary>
/// <param name="sql"></param>
/// <returns>影响数据个数</returns> public static int Execute(string sql)
{
return Execute(sql, connString);
} /// <summary>
/// 执行SQL语句
/// </summary>
/// <param name="sql"></param>
/// <param name="_connstring"></param>
/// <returns>影响数据个数</returns>
public static int Execute(string sql, string _connString)
{
int count = ;
if (sql.Equals(""))
{
return -;
}
using (SqlConnection con = new SqlConnection(_connString))
{
try
{
con.Close();
con.Open(); SqlTransaction trans = con.BeginTransaction();
try
{ SqlCommand cmd = con.CreateCommand();
cmd.Transaction = trans;
cmd.CommandText = sql;
count = cmd.ExecuteNonQuery(); trans.Commit();
return count;
}
catch (Exception e)
{
trans.Rollback();
count = -; //return count;
throw new Exception(e.Message); }
finally
{ con.Close(); }
}
catch (Exception e)
{
//trans.Rollback(); throw new Exception(e.Message);
//return -100;
}
}
} /// <summary>
/// 执行多条SQL语句,实现数据库事务。
/// </summary>
/// <param name="SQLStringList">多条SQL语句</param>
public static void ExecuteSqlTran(ArrayList SQLStringList, string _connString)
{
using (SqlConnection conn = new SqlConnection(_connString))
{
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
SqlTransaction tx = conn.BeginTransaction();
cmd.Transaction = tx;
try
{
for (int n = ; n < SQLStringList.Count; n++)
{
string strsql = SQLStringList[n].ToString();
if (strsql.Trim().Length > )
{
cmd.CommandText = strsql;
cmd.ExecuteNonQuery();
}
}
tx.Commit();
}
catch (Exception e)
{
tx.Rollback();
throw new Exception(e.Message);
}
}
} /// <summary>
/// 通过DataTable批量更新数据库
/// </summary>
/// <param name="newDT"></param>
/// <param name="sql"></param>
/// <returns>执行结果</returns> public static bool UpdateDT(DataTable newDT, string sql)
{
return UpdateDT(newDT, sql, connString);
}
/// <summary>
/// 通过DataTable批量更新数据库
/// </summary>
/// <param name="newDT"></param>
/// <param name="sql"></param>
/// <param name="_connString"></param>
/// <returns>执行结果</returns> public static bool UpdateDT(DataTable newDT, string queryString, string _connString)
{ using (SqlConnection connection = new SqlConnection(_connString))
{
try
{
SqlDataAdapter adapter = new SqlDataAdapter();
adapter.SelectCommand = new SqlCommand(queryString, connection);
SqlCommandBuilder builder = new SqlCommandBuilder(adapter); connection.Open(); //DataSet customers = new DataSet();
DataTable dt = new DataTable();
adapter.Fill(dt); //code to modify data in dataset here adapter.Update(newDT); return true;
}
catch (Exception e)
{
connection.Close();
//return ;
throw new Exception(e.Message);
}
finally
{
connection.Close();
}
}
} public static int SqlExecuteNonQuery(string sql)
{
return SqlExecuteNonQuery(sql, connString);
} public static int SqlExecuteNonQuery(string sql, string _connString)
{
using (SqlConnection con = new SqlConnection(_connString))
{
try
{
con.Close();
con.Open();
SqlCommand cmd = new SqlCommand(sql, con);
int i = cmd.ExecuteNonQuery(); return i;
}
catch (Exception e)
{
con.Close();
throw new Exception(e.Message);
}
finally
{
con.Close();
}
}
} public static object SqlExcuteScalar(string sql)
{
return SqlExcuteScalar(sql, connString);
} public static object SqlExcuteScalar(string sql, string _connString)
{
using (SqlConnection con = new SqlConnection(_connString))
{
try
{
con.Close();
con.Open();
SqlCommand cmd = new SqlCommand(sql, con);
object obj = cmd.ExecuteScalar(); return obj;
}
catch (Exception e)
{
con.Close();
throw new Exception(e.Message);
}
finally
{
con.Close();
}
}
} /// <summary>
/// SQLExecuteTransaction
/// </summary>
/// <param name="sqls"></param>
/// <returns>using try catch to catch the error msg</returns>
public static bool SQLExecuteTransaction(string[] sqls)
{
return SQLExecuteTransaction(sqls, connString);
}
public static bool SQLExecuteTransaction(string[] sqls, string _connString)
{
using (SqlConnection con = new SqlConnection(_connString))
{
try
{
con.Open();
SqlTransaction trans = con.BeginTransaction();
try
{ SqlCommand cmd = con.CreateCommand();
cmd.Transaction = trans; foreach (string s in sqls)
{
cmd.CommandText = s;
cmd.ExecuteNonQuery();
}
trans.Commit();
return true;
}
catch (Exception e)
{
trans.Rollback();
throw new Exception(e.Message);
}
finally
{
con.Close();
}
}
catch (Exception e)
{
//trans.Rollback();
throw new Exception(e.Message);
}
}
} /// <summary>
/// 判断指定表是否存在
/// </summary>
/// <param name="_connString">数据库连接字符串</param>
/// <param name="tableName">表名</param>
/// <returns></returns>
public static bool isTableExist(String tableName, string _connString)
{
//查询数据库中表 固定语句
String sql = "select * from sys.objects where type='U' and name='" + tableName + "'"; DataTable dt = new DataTable();
if (sql.Equals(""))
{
return false;
}
using (SqlConnection con = new SqlConnection(_connString))
{
try
{
con.Close();
con.Open();
SqlCommand cmd = new SqlCommand(sql, con);
SqlDataAdapter oda = new SqlDataAdapter(cmd);
oda.Fill(dt);
cmd.Dispose();
if (dt.Rows.Count > )
{
return true;
}
}
catch (Exception e)
{
con.Close();
}
finally
{
con.Close();
}
}
return false;
} /// <summary>
/// 利用DataTable的数据结构,在SQL中创建新表
/// </summary>
/// <param name="dt">数据表对象</param>
/// <param name="tableName">表名称</param>
/// <param name="_connString">连接数据库字符串</param>
/// <returns></returns>
public static bool CreateTableToSql(DataTable dt,string tableName, string _connString)
{
try
{
StringBuilder sb = new StringBuilder();
sb.Append("create table [" + tableName + "] (");
foreach (DataColumn column in dt.Columns)
{
sb.Append(" [" + column.ColumnName + "] " + ConnSql.GetTableColumnType(column.DataType) + ",");
}
string sql = sb.ToString();
sql = sql.TrimEnd(',');
sql += ")";
ConnSql.Execute(sql, _connString);
}
catch (Exception ex)
{
return false;
}
return true;
} /// <summary>
/// 将DataTable 数据类型转换成 SQL 支持的类型
/// </summary>
/// <param name="type">DataTable 列类型</param>
/// <returns></returns>
public static string GetTableColumnType(System.Type type)
{
string result = "varchar(8000)";
string sDbType = type.ToString();
switch (sDbType)
{
case "System.String":
break;
case "System.Int16":
result = "int";
break;
case "System.Int32":
result = "int";
break;
case "System.Int64":
result = "float";
break;
case "System.Decimal":
result = "decimal(18,6)";
break;
case "System.Double":
result = "decimal(18,6)";
break;
case "System.DateTime":
result = "datetime";
break;
default:
break;
}
return result;
} }

通用方法类(数据复制):

using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.OleDb;
using System.IO;
using System.Data.SqlClient; namespace aaaaaa
{
/// <summary>
/// 通用函数类
/// 2013.10.09
/// zouhao
/// </summary>
class GeneralFun
{
/// <summary>
/// 从文件中(Excel、Access)读取数据,装载到DataTable对象
/// </summary>
/// <param name="pathName">绝对路径+文件名</param>
/// <param name="tableName">表名</param>
/// <returns></returns>
public static DataTable FileToDataTable(string pathName, string tableName)
{
return GeneralFun.FileToDataTable(pathName, tableName, "");
} /// <summary>
/// 从文件中(Excel、Access)读取数据,装载到DataTable对象
/// </summary>
/// <param name="pathName">绝对路径+文件名</param>
/// <param name="tableName">表名</param>
/// <param name="where">查询条件</param>
/// <returns></returns>
public static DataTable FileToDataTable(string pathName, string tableName, string where)
{
//格式化传入传输
pathName = pathName.Trim().ToLower();
tableName = tableName.Trim().ToLower();
where = where.Trim().ToLower(); //读取数据
DataTable tbContainer = new DataTable();
string strConn = string.Empty;
if (string.IsNullOrEmpty(tableName)) { tableName = "Sheet1"; }
FileInfo file = new FileInfo(pathName);
if (!file.Exists) { throw new Exception("文件不存在"); }
string extension = file.Extension.Trim().ToLower();
switch (extension)
{
case ".xls"://Excel2003
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + pathName + ";Extended Properties='Excel 8.0;HDR=No;IMEX=1;'";
tableName += "$";
break;
case ".xlsx"://Excel2007
strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + pathName + ";Extended Properties='Excel 12.0;HDR=No;IMEX=1;'";//{IMEX = 0:写,1:读,2:读/写;} {HDR = Yes,第一行是标题}
tableName += "$";
break;
case ".mdb"://Access2003
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + pathName;
break;
case ".accdb"://Access2007
strConn = "Provider=Microsoft.Ace.OLEDB.12.0;Data Source=" + pathName;
//Provider=Microsoft.Ace.OleDb.12.0;Data Source=文件位置;Jet OLEDB:Database Password=密码;
break;
}
//链接文件
OleDbConnection cnnxls = new OleDbConnection(strConn);
//生成SQL字符串
string sql = string.Format(" select * from [{0}] ", tableName);
//判断是否有条件
if (!string.IsNullOrEmpty(where))
{
//判读用户是否添加了 where 字符串
if (- == where.IndexOf("where")) where = " where " + where;
//添加查询条件
sql += where;
}
//读取文件数据
OleDbDataAdapter oda = new OleDbDataAdapter(sql, cnnxls);
DataSet ds = new DataSet();
//将文件里面有表内容装载到内存表中!
oda.Fill(tbContainer);
return tbContainer;
} /// <summary>
/// 将DataTable 覆盖到 SQL某表(包括表结构及所有数据)
/// </summary>
/// <param name="dt">数据表对象</param>
/// <param name="tableName">表名称</param>
/// <param name="desConnString">SQL数据库连接字符串。例:Persist Security Info=False;User ID=sa;Password=bdyh;Initial Catalog=tm_base_sys;Server=192.168.1.61;Connection Timeout=2</param>
/// <returns></returns>
public static bool DataTableToSql(DataTable dt, string tableName, string desConnString)
{
try
{
//判断连接是否成功
if (ConnSql.Connect(desConnString))
{
//1、判断服务器表是否存在,如果不存在则服务器端创建表
if (ConnSql.isTableExist(tableName, desConnString))
{
//MessageBox.Show(tableName + "表存在!"); //清除已存在的表,并且重新创建新表(好处在于,复制数据的时候,所有字段肯定符合要求,不容易出错)
{
//清除已存在的表
ConnSql.Execute("drop table " + tableName + "", desConnString);
//创建新表
ConnSql.CreateTableToSql(dt, tableName, desConnString);
} //或者 ////直接删除表数据,不重新建表(弊端在于,复制数据的时候,某些字段有可能不符合要求,容易出错)
//{
// //清除已存在的表
// ConnSql.Execute("delete from " + tableName + "", desConnString);
//}
}
else
{
//MessageBox.Show(tableName + "不表存在!"); //创建新表
ConnSql.CreateTableToSql(dt, tableName, desConnString); } //2、拷贝数据到服务器
using (SqlBulkCopy sqlCopy = new SqlBulkCopy(desConnString, SqlBulkCopyOptions.UseInternalTransaction))
{
sqlCopy.BulkCopyTimeout = ;
sqlCopy.DestinationTableName = tableName;
if (dt != null && dt.Rows.Count != )
{
sqlCopy.WriteToServer(dt);
}
}
}
else
{
throw new Exception("连接服务器失败!");
}
}
catch (Exception ex)
{
throw new Exception(ex.Message);
} return true;
}
}
}

将DataTable 覆盖到 SQL某表(包括表结构及所有数据)的更多相关文章

  1. 数据库表设计时一对一关系存在的必要性 数据库一对一、一对多、多对多设计 面试逻辑题3.31 sql server 查询某个表被哪些存储过程调用 DataTable根据字段去重 .Net Core Cors中间件解析 分析MySQL中哪些情况下数据库索引会失效

    数据库表设计时一对一关系存在的必要性 2017年07月24日 10:01:07 阅读数:694 在表设计过程中,我无意中觉得一对一关系觉得好没道理,直接放到一张表中不就可以了吗?真是说,网上信息什么都 ...

  2. sql语句对数据库表进行加锁和解锁

    锁是数据库中的一个非常重要的概念,它主要用于多用户环境下保证数据库完整性和一致性. 我们知道,多个用户能够同时操纵同一个数据库中的数据,会发生数据不一致现象.即如果没有锁定且多个用户同时访问一个数据库 ...

  3. SQL Server三种表连接原理

    在SQL Server数据库中,查询优化器在处理表连接时,通常会使用一下三种连接方式: 嵌套循环连接(Nested Loop Join) 合并连接 (Merge Join) Hash连接 (Hash ...

  4. Databricks 第6篇:Spark SQL 维护数据库和表

    Spark SQL 表的命名方式是db_name.table_name,只有数据库名称和数据表名称.如果没有指定db_name而直接引用table_name,实际上是引用default 数据库下的表. ...

  5. 转: 从Mysql某一表中随机读取n条数据的SQL查询语句

    若要在i ≤ R ≤ j 这个范围得到一个随机整数R ,需要用到表达式 FLOOR(i + RAND() * (j – i + 1)).例如, 若要在7 到 12 的范围(包括7和12)内得到一个随机 ...

  6. SQL学习之联结表的使用

    1.简介:"联结(join)表"是SQL最强大的功能之一.联结是利用SQL的SELECT能执行的最重要的操作,很好地理解联结及其语法是学习SQL的极为重要的部分! 在能够有效的使用 ...

  7. Sql的分库分表,及优化

    对Sql细节优化 在sql查询中为了提高查询效率,我们常常会采取一些措施对查询语句进行sql优化,下面总结的一些方法,有需要的可以参考参考. 首先给大家介绍一下分库分表 分库分表 分库 垂直分库 业务 ...

  8. 基本 SQL 之数据库及表管理

    上篇文章,我们基于『数据库』做了一个宏观上的介绍,你应当了解到数据库是在何种背景下,为了解决什么样的问题而诞生的,以及在具体实现下又可以划分哪些中类型. 非关系型数据库的种类很多,我们会在后续的篇章中 ...

  9. SQL Server2008及以上 表分区操作详解

    SQL Server 表分区之水平表分区  转自:https://www.cnblogs.com/Brambling/p/6766482.html 什么是表分区? 表分区分为水平表分区和垂直表分区,水 ...

随机推荐

  1. React Js 之JSX

    React使用JSX作为模板替换JavaScript,它不是必须的,但是它是推荐使用.原因如下: 1.它比传统的JavaScript更快,因为编译代码的时候,JSX做了相应的优化 2.它是类型安全的, ...

  2. Snagit安装步骤

    Snagit安装步骤 1解压文件 2运行文件下一步下一步 3拷贝汉化文件到安装目录 安装目录  D:\home\user\TechSmith\snagit 成功

  3. PHP:第四章——数组中的排序函数

    <pre> <?php header("Content-Type:text/html;charset=utf-8"); //1) /*sort - 对数组进行升序 ...

  4. 快速切题 poj1258

    坑!!!我还以为一个整数会截到两行!! Agri-Net Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 40056   Ac ...

  5. harbor私有镜像仓库的搭建与使用与主从复制

    harbor私有镜像仓库,私有仓库有两种,一种是harbor,一种是小型的私有仓库,harbor有两种模式,一种是主 从,一种是高可用仓库,项目需求,需要两台服务器,都有docker.ldap权限统一 ...

  6. 201621123010《Java程序设计》第14周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结与数据库相关内容. 2. 使用数据库技术改造你的系统 2.1 简述如何使用数据库技术改造你的系统.要建立什么表?截图你的表设计. 答 ...

  7. java爬虫爬取的html内容中空格(&nbsp;)变为问号“?”的解决方法

    用java编写的爬虫,使用xpath爬取内容后,发现网页源码中的 全部显示为?(问号),但是使用字符串的replace("?", ""),并不能替换,网上找了一 ...

  8. php变量和字符串连接符——点

    连接符——点,本身也是一种运算符.它真正的名字应该叫“字符运算符”.作用是把两个字符串连接起来. echo 字符 . 变量 . 字符;  //点号把三个值连接成为一个,运行正常. 例: 1.字符串+变 ...

  9. FTP 主动模式 与被动模式

    今天在被电信运营商给的没有内网ip被nat后的内网ip访问我的ftp服务器时出现了,连接被关闭的错误,经过多番查询发现问题原因是因为NAT内网ip没有被有效地转换为外网ip,也即是说NAT对ftp协议 ...

  10. a 标签解决,新窗口打开跨域问题

    <a href="https://xxxx.vip/home" rel="nofollow noreferrer" target="_blank ...