调用代码:

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. Amaze UI 发布基于jQuery新版本v2.0.0之web组件

    首先Amaze Ui第一版时我收到邮件邀请去试用,去了官网看了下,是基于zepto.js的一个类似bootstrap的响应式框架,提到框架当然是好事,快速开发呗.这词2.0的弃用zepto.js改用j ...

  2. React教程-组件

    在React中创建一个组件非常简单(React组件有2种,一个非状态组件,一个有状态组件) 首先我们来看看ES6里面如何写构造函数 class App{ constructor(){ } event( ...

  3. FormShortCut MainForm 和 二级FORM

    发现,主FORM 定义的快捷键,在二级FORM里也有效. 反过来,就无效. 这样的话,就要考虑 快捷键的冲突问题 了,本来以为不同的FORM 是独立的. http://codeverge.com/em ...

  4. L1-024 后天

    如果今天是星期三,后天就是星期五:如果今天是星期六,后天就是星期一.我们用数字1到7对应星期一到星期日.给定某一天,请你输出那天的“后天”是星期几. 输入格式: 输入第一行给出一个正整数D(1 ≤ D ...

  5. web.xml的schema文件

    2.3和2.4: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE web-app PUBLI ...

  6. rim

    “也许我们需要一些药物了”卡拉米走回他的研究室 不去看他最好的朋友的尸体. 过了今晚,他的血肉会被工虫分解. 播种机会犁过他的骨殖,种下土豆与甜菜. 索斯蹲下,不禁思考 生与死在这里太过平常 这是他们 ...

  7. GSM信道分类

    GSM是一个数字峰窝无线网络,它采用时分多址(TDMA)技术,在一个网络信道中支持多组通话.时分多址技术将一个GSM信道分为多个时隙(时间段),然后将这些时隙分配给移动电话用户,其中,分配给同一个用户 ...

  8. Foundation--NSString , array and Dictionary

    一,NSString的创建 NSString*str=@" a string ";//直接创建一个字符串常量,这样创建出来的字符串不需要释放内存 NSLog(@"%@&q ...

  9. vue2.*初体验

    一. 推荐开发环境 二. 安装环境 安装 nvm :curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.3/install. ...

  10. length()

    在MATLAB中: size:获取数组的行数和列数 length:数组长度(即行数或列数中的较大值) numel:元素总数. s=size(A),当只有一个输出参数时,返回一个行向量,该行向量的第一个 ...