看看代码有什么问题!运行成功就是,我用企业管理器打开SQL表里是空的!
protected void Button1_Click(object sender, EventArgs e)
{
//批量添加指纹记录
string strcon = "server=(local);database=finger;user id=sa;pwd=";
SqlConnection conn = new SqlConnection (strcon);//链接sql数据库
conn.Open();
try
{
string filepath = FileUpload1.PostedFile.FileName;//取得excel文件路径
OleDbConnection objConn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath + ";" + "Extended Properties=Excel 8.0;");
objConn.Open();
DataTable schemaTable = objConn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, null);
string tableName = schemaTable.Rows[0][2].ToString().Trim();//获取 Excel 的表名,默认值是sheet1
string strCom = "SELECT * FROM [" + tableName + "]";
System.Data.OleDb.OleDbDataAdapter myCommand = new System.Data.OleDb.OleDbDataAdapter(strCom, objConn);
DataSet ds = new DataSet();//取得数据集
myCommand.Fill(ds, tableName);//连接数据
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
string 部门 = ds.Tables[0].Rows[i][0].ToString();
string 姓名 = ds.Tables[0].Rows[i][1].ToString();
string 编号 = ds.Tables[0].Rows[i][2].ToString();
string 日期时间 = ds.Tables[0].Rows[i][3].ToString();
//string 签到/退 = ds.Tables[0].Rows[i][4].ToString();
string 标识号 = ds.Tables[0].Rows[i][5].ToString();
string 身份证号 = ds.Tables[0].Rows[i][6].ToString();
if (部门 != "" && 姓名 != "" && 编号 != "" && 日期时间 != "" && 标识号 != "" && 身份证号!="")
{
SqlCommand insertcmd = new SqlCommand("INSERT INTO DSQ (部门,姓名,编号,日期时间,标识号,身份证号) VALUES ('" + 部门 + "','" + 姓名 + "','" + 编号 + "','" + 日期时间 + "','" + 标识号 + "','" + 身份证号 + "')", conn);
insertcmd.ExecuteNonQuery();
//insertcount++;
}
}
Response.Write("<script language='javascript'>alert('数据导入成功!')</script>");
}
catch
{
Response.Write("<script language='javascript'>alert('导入失败!');</script>");
}
finally
{
conn.Close();
}
这个测试了一下,没发现什么问题, 我的环境是,win2003/vs2008/sql2005/Excel2003
你应该看下SQL表是不是有什么约束之类的,导至了数据不正常插入了.(应该是SQL服务器或表有问题) 建个新表试下,不要加任何约束之类的,只是一个表,应该没有问题.
建意SQL语句写成参数的形式,不建SQL中包含变量.
xuexi