上文的第一种导入方法是通过中间变量DataTable.
本文是第二种方法.直接通过sql语句的控制将Execl写入Sql
界面还是FileUpload和Button,通过按钮获取Excel文件路径.这里就不介绍了.详情请看Excel导入SqlServer数据库(一)。逻辑层将文件路径下传给数据处理层。
下面看D层具体做法:
- <span style="color: rgb(0, 0, 153); font-size: 18px;"> /// <summary>
- /// 通过sql语句将Excel导入Sql
- /// </summary>
- /// <param name="strPath">Excel文件所在路径</param>
- /// <returns>bool</returns>
- public bool BatchInsertData(string strPath)
- {
- bool blnResult = false;
- //这种写法用于数据库中的表不存在,则在新建newTable表后,导入Excel中的数据.
- // string strsql = "select * into newTable from OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source=" + "\"" + path + "\"" + ";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]";
- //这种写法用于表Table已经存在的情况下,直接导入数据.
- string strsql = "insert into Table select * from OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 8.0;HDR=YES;DATABASE=" + strPath + "',Sheet1$)";
- //初始化连接
- string strConn = "server=192.168.*.*;database=Student;uid=sa;pwd=123";
- SqlConnection objConn = new SqlConnection(strConn);
- //打开连接
- objConn.Open();
- //执行
- SqlCommand sqlcom = new SqlCommand(strsql, objConn);
- if (sqlcom.ExecuteNonQuery() > 0)
- {
- blnResult = true;
- }
- return blnResult;
- }</span>
/// <summary>
/// 通过sql语句将Excel导入Sql
/// </summary>
/// <param name="strPath">Excel文件所在路径</param>
/// <returns>bool</returns>
public bool BatchInsertData(string strPath)
{
bool blnResult = false;
//这种写法用于数据库中的表不存在,则在新建newTable表后,导入Excel中的数据.
// string strsql = "select * into newTable from OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source=" + "\"" + path + "\"" + ";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]";
//这种写法用于表Table已经存在的情况下,直接导入数据.
string strsql = "insert into Table select * from OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 8.0;HDR=YES;DATABASE=" + strPath + "',Sheet1$)";
//初始化连接
string strConn = "server=192.168.*.*;database=Student;uid=sa;pwd=123";
SqlConnection objConn = new SqlConnection(strConn);
//打开连接
objConn.Open();
//执行
SqlCommand sqlcom = new SqlCommand(strsql, objConn);
if (sqlcom.ExecuteNonQuery() > 0)
{
blnResult = true;
}
return blnResult;
}
这种方法代码相对简单。重点就是对Sql语句的应用。
下面总结几种比较常用的导入导出的sql语句。
一,SQL SERVER 和access的数据导入导出
1.在SQL SERVER里查询access数据:
SELECT * FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source="c:\DB.mdb";User ID=Admin;Password=')...表名
2.将access导入SQL server
SELECT * INTO newtable FROM OPENDATASOURCE ('Microsoft.Jet.OLEDB.4.0', 'Data Source="c:\DB.mdb";User ID=Admin;Password=' )...表名
3.将SQL SERVER表里的数据插入到Access表中
insert into OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source=" c:\DB.mdb";User ID=Admin ;Password=')...表名 (列名1,列名2) select 列名1,列名2 from sql表
insert into OPENROWSET ('Microsoft.Jet.OLEDB.4.0', 'C:\db.mdb';'admin';'', Test) select id,name from Test INSERT INTO OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'c:\trade.mdb'; 'admin'; '', 表名) SELECT * FROM sqltablename
二、SQL SERVER 和EXCEL的数据导入导出
1、在SQL SERVER里查询Excel数据:
SELECT * FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source="c:\book1.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]
2、将Excel的数据导入SQL server :
SELECT * into newtable FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source="c:\book1.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]
3、将SQL SERVER中查询到的数据导成一个Excel文件
EXEC master..xp_cmdshell 'bcp 库名.dbo.表名out c:\Temp.xls -c -q -S"servername" -U"sa" -P""' --参数说明:S 是SQL服务器名;U是用户;P是密码
举例:EXEC master..xp_cmdshell 'bcp saletesttmp.dbo.Table out c:\temp1.xls -c -q -S"pmserver" -U"sa" -P"sa"'
4、在SQL SERVER里往Excel插入数据:
insert into OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source="c:\Temp.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...table1 (A1,A2,A3) values (1,2,3)