杭州 高端网站建设,衡阳网站优化方案,杭州网站建设公司排名,wordpress做在线编辑图片大小在做一些web数据库管理系统的时候经常要实现将帐户批量注册的功能#xff0c;今天就来讲讲如何在C#-web项目中将txt文件和excel文件导入SQL2000数据库。1.数据库准备在SQL2000数据库的实例数据库pubs中建立一个数据表txtInsert#xff0c;字段很简单#xff1a;id#xff0…在做一些web数据库管理系统的时候经常要实现将帐户批量注册的功能今天就来讲讲如何在C#-web项目中将txt文件和excel文件导入SQL2000数据库。1.数据库准备在SQL2000数据库的实例数据库pubs中建立一个数据表txtInsert字段很简单idname两个。2.txt文本文件导入对于数据文件导入与导出SQL2000提供了BULK INSERT和BCP语句在这里可以使用BULK INSERT命令实现。假设在c盘上有一个文本文件stu.txt内容为 1,tom 2,jack 3,jhon ......实现导入的C#代码如下protected System.Web.UI.HtmlControls.HtmlInputFile fName; protected System.Web.UI.WebControls.Button BtnInsert;//上面两个控件自己添加private void BtnInsert_Click(object sender, System.EventArgs e) { string fPaththis.fName.PostedFile.FileName;//获得要导入的文本文件 string extNamefPath.Substring(fPath.LastIndexOf(.)1);//获得文件的扩展名 SqlConnection connew SqlConnection(server.;databasepubs;uidsa;pwd;);//数据库连接对象 con.Open(); try { SqlCommand comnew SqlCommand(BULK INSERT pubs.dbo.txtInsert FROM fPath WITH (FIELDTERMINATOR ,,ROWTERMINATOR \n),con); //其中的FIELDTERMINATOR,指明字段间所使用的分隔符为逗号 //其中ROWTERMINATOR \n指明记录间所使用的分隔符为回车 com.ExecuteNonQuery(); Response.Write(script languagejavascriptalert(数据导入成功!)/script); } catch (SqlException SQLexc) { Response.Write(导入数据库时出错 SQLexc.ToString()); }con.Close();} 好了这个txt文件的导入相对简单在数据库中我也没有设置主键我在里面也没有加出错回滚事务操作在下面的excel文件的导入中介绍。3.excel文件的导入在c盘里建立一个stu.xls文件在sheet1工作表中有两列数据如下 编号 姓名 1 tom 2 jack 3 john ......注意工作表的第一行是作为标题行的不会被插入到数据库中真正导入从第二行开始。为了演示事物出错回滚在这里将txtInsert数据库表中的id字段设置为主键。实现的C#代码如下private void BtnInsert_Click(object sender, System.EventArgs e) { string fPaththis.fName.PostedFile.FileName;//获得要导入的文本文件 string extNamefPath.Substring(fPath.LastIndexOf(.)1);//获得文件的扩展名 SqlConnection connew SqlConnection(server.;databasepubs;uidsa;pwd;);//数据库连接对象 con.Open(); //注意下面的连接字符串是它起到了导入的作用 SqlCommand excelCmdnew SqlCommand(insert into txtInsert select * from OPENROWSET(MICROSOFT.JET.OLEDB.4.0,Excel 5.0;HDRYES;DATABASEfPath,Sheet1$),con); SqlTransaction myTrancon.BeginTransaction();//开始一个事务操作 excelCmd.TransactionmyTran; try { excelCmd.ExecuteNonQuery(); myTran.Commit();//提交事务 Response.Write(script languagejavascriptalert(数据导入成功!)/script); } catch (SqlException err) { myTran.Rollback(); //出错回滚事务操作 //以下三行是去掉数据库出错信息中的非法字符单引号、回车和换行符否则在使用时javascript代码将有语法错误 //因为js的编码和c#的编码不同 string errStringerr.Message.Replace(, ); errStringerrString.Replace(Convert.ToChar(13).ToString(),); errStringerrString.Replace(Convert.ToChar(10).ToString(),); //显示出错信息框 Response.Write(script languagejavascriptalert(导入数据库时出错!详细信息:errString)/script); } con.Close(); } 这里“显示出错信息框”开始我没有田间那三行代码结果搞了半天最后还是在html文件中发现javascript代码部分出现了分行老是提示“未结束的字符串常量”所以导致不能打开信息框郁闷死我了花了好多时间。4.将excel中部分列导入数据库的方法上面讲了关于将整个excel文件导入数据库的方法那么在实际项目中遇到将excel文件中若干列导入数据库怎么办的呢原理差不多我就将代码直接给出了string fPaththis.fName.PostedFile.FileName;//获得要导入的文本文件 string extNamefPath.Substring(fPath.LastIndexOf(.)1);//获得文件的扩展名 SqlConnection connew SqlConnection(server.;databasepubs;uidsa;pwd;);//数据库连接对象 con.Open(); string mystringProvider Microsoft.Jet.OLEDB.4.0 ; Data Source fPath;Extended PropertiesExcel 8.0; OleDbConnection cnnxls new OleDbConnection (mystring); OleDbDataAdapter myDa new OleDbDataAdapter(select * from [Sheet1$],cnnxls); DataSet myDs new DataSet(); myDa.Fill(myDs); if(myDs.Tables[0].Rows.Count 0) { string strSql ; string CnnStringProviderSQLOLEDB;databasepubs;server.;uidsa;pwd; OleDbConnection conn new OleDbConnection(CnnString); conn.Open (); OleDbCommand myCmd null; for(int i0; imyDs.Tables[0].Rows.Count;i)//第一个工作表中行数不包括第一行 { strSqlinsert into txtInsert(id,name) values (; strSql myDs.Tables[0].Rows[i].ItemArray[0].ToString() , ; strSql myDs.Tables[0].Rows[i].ItemArray[1].ToString() ); myCmdnew OleDbCommand(strSql,conn); try { myCmd.ExecuteNonQuery(); Response.Write(script languagejavascriptalert(数据导入成功!)/script); } catch (OleDbException err) { Response.Write(导入数据库时出错 err.ToString()); break; } } conn.Close(); 其他部分代码自己加吧这里就是出错失误回滚有点不好处理请高手指教 转载于:https://www.cnblogs.com/mc-dragon/archive/2007/01/18/624238.html