首页 新闻 赞助 找找看

Excel导入Sql数据库

0
悬赏园豆:20 [已解决问题] 解决于 2008-11-24 15:24

看看代码有什么问题!运行成功就是,我用企业管理器打开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();
        } 

子夜星辰的主页 子夜星辰 | 小虾三级 | 园豆:1613
提问于:2008-11-24 11:38
< >
分享
最佳答案
0

这个测试了一下,没发现什么问题, 我的环境是,win2003/vs2008/sql2005/Excel2003

 你应该看下SQL表是不是有什么约束之类的,导至了数据不正常插入了.(应该是SQL服务器或表有问题) 建个新表试下,不要加任何约束之类的,只是一个表,应该没有问题.

建意SQL语句写成参数的形式,不建SQL中包含变量.

程序员老李 | 小虾三级 |园豆:790 | 2008-11-24 13:23
其他回答(1)
0

xuexi

Jared.Nie | 园豆:1940 (小虾三级) | 2008-11-24 14:15
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册