您的位置:首页 > 数据库

将txt文件和excel文件导入SQL2000数据库

2008-12-08 08:45 447 查看
在做一些web数据库管理系统的时候经常要实现将帐户批量注册的功能,今天就来讲讲如何在C#-web项目中将txt文件和excel文件导入SQL2000数据库。
1.数据库准备
在SQL2000数据库的实例数据库pubs中建立一个数据表txtInsert,字段很简单:id,name两个。
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 fPath=this.fName.PostedFile.FileName;//获得要导入的文本文件


string extName=fPath.Substring(fPath.LastIndexOf(".")+1);//获得文件的扩展名


SqlConnection con=new SqlConnection("server=.;database=pubs;uid=sa;pwd=;");//数据库连接对象


con.Open();


try






{


SqlCommand com=new SqlCommand("BULK INSERT pubs.dbo.txtInsert FROM '"+fPath+"' WITH (FIELDTERMINATOR = ',',ROWTERMINATOR= '/n')",con);


//其中的FIELDTERMINATOR=','指明字段间所使用的分隔符为逗号


//其中ROWTERMINATOR= '/n'指明记录间所使用的分隔符为回车


com.ExecuteNonQuery();


Response.Write("<script language=javascript>alert('数据导入成功!')</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 fPath=this.fName.PostedFile.FileName;//获得要导入的文本文件


string extName=fPath.Substring(fPath.LastIndexOf(".")+1);//获得文件的扩展名


SqlConnection con=new SqlConnection("server=.;database=pubs;uid=sa;pwd=;");//数据库连接对象


con.Open();


//注意下面的连接字符串,是它起到了导入的作用


SqlCommand excelCmd=new SqlCommand("insert into txtInsert select * from OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE="+fPath+"',Sheet1$)",con);


SqlTransaction myTran=con.BeginTransaction();//开始一个事务操作


excelCmd.Transaction=myTran;


try






{


excelCmd.ExecuteNonQuery();


myTran.Commit();//提交事务


Response.Write("<script language=javascript>alert('数据导入成功!')</script>");


}


catch (SqlException err)






{


myTran.Rollback(); //出错回滚事务操作


//以下三行是去掉数据库出错信息中的非法字符单引号、回车和换行符,否则在使用时javascript代码将有语法错误


//因为js的编码和c#的编码不同


string errString=err.Message.Replace("'"," ");


errString=errString.Replace(Convert.ToChar(13).ToString(),"");


errString=errString.Replace(Convert.ToChar(10).ToString(),"");


//显示出错信息框


Response.Write("<script language=javascript>alert('导入数据库时出错!详细信息:"+errString+"')</script>");


}


con.Close();


}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: