求教,.DBF文件导入到SqlServer2005的问题
新人,由于学校给的学生数据格式是.DBF格式的,现在新开发了一套系统,数据库用的是Sqlserver2005,但是对于学生数据的维护还是.DBF格式的,现在遇到的就是.DBF格式的文件怎么插入到Sqlserver2005数据库里,表的格式如下:
Xh nvachar(50) 备注:学号
Xm nvachar(50) 备注:姓名
Bh nvachar(50) 备注:院系
新建的表和给的数据格式完全一致,本人参考了网上的一个例子,但是有些东西看不太懂,源代码如下:
protected void Button1_Click(object sender, EventArgs e)
{
SXHD_DAL.DatabaseOper Dc = new DatabaseOper();
System.Data.Odbc.OdbcConnection conn_dbf = new System.Data.Odbc.OdbcConnection();
if (FileUpload1.PostedFile.ContentLength == 0)
{
Response.Write("<mce:script language=javascript><!--
alert('请选择需要导入的数据源!')
// --></mce:script>");
}
else
{
string fileName = FileUpload1.PostedFile.FileName.ToString();//获取dbf文件(包含路径)
//链接dbf数据库字符串
string connStr = "Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDB=" + fileName + ";Exclusive=No;NULL=NO;Collate=Machine;BACKGROUNDFETCH=NO;DELETED=NO";
conn_dbf.ConnectionString = connStr;
conn_dbf.Open(); //打开链接
string sql = "select * from " + fileName;
OdbcDataAdapter da = new OdbcDataAdapter(sql, conn_dbf);
DataTable dt = new DataTable();
da.Fill(dt);
DataSet ds = new DataSet();
ds.Tables.Add(dt);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
string str_inst = "insert into Student(YXMC,YXDM,KSH,XH,ZCDM,XM,XB,ZY,ZZMM,PYFS,SYSZD,RXNY,BYNY,XZ,XL) values('" + ds.Tables[0].Rows[i]["YXMC"].ToString().Trim() + "','" + ds.Tables[0].Rows[i]["YXDM"].ToString().Trim() + "','" + ds.Tables[0].Rows[i]["KSH"].ToString().Trim() + "','" + ds.Tables[0].Rows[i]["XH"].ToString().Trim() + "','" + ds.Tables[0].Rows[i]["ZCDM"].ToString().Trim() + "',";
str_inst += "'" + ds.Tables[0].Rows[i]["XM"].ToString().Trim() + "','" + ds.Tables[0].Rows[i]["XB"].ToString().Trim() + "','" + ds.Tables[0].Rows[i]["ZY"].ToString().Trim() + "','" + ds.Tables[0].Rows[i]["ZZMM"].ToString().Trim() + "','" + ds.Tables[0].Rows[i]["PYFS"].ToString().Trim() + "','" + ds.Tables[0].Rows[i]["SYSZD"].ToString().Trim() + "','" + ds.Tables[0].Rows[i]["RXNY"].ToString().Trim() + "','" + ds.Tables[0].Rows[i]["BYNY"].ToString().Trim() + "','" + ds.Tables[0].Rows[i]["XZ"].ToString().Trim() + "','" + ds.Tables[0].Rows[i]["XL"].ToString().Trim() + "')";
Dc.addData(str_inst);
}
Response.Write("<mce:script language=javascript><!--
alert('成功导入 " + ds.Tables[0].Rows.Count.ToString()+ " 条毕业生数据!')
// --></mce:script>");
conn_dbf.Close(); //关闭链接
Response.Redirect("student.aspx");
}
}
[解决办法]
在sql server2005里面这样查询,你看能够查询出来吗?
select * from openrowset('MSDASQL',
'Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=c:/',
'select * from [aa.DBF]')