首页 新闻 会员 周边 捐助

try ..catch问题

0
悬赏园豆:20 [已解决问题] 解决于 2008-11-25 08:48

OleDbCommand checkcmd = new OleDbCommand("select count(*) from [" + tableName + "] where 日期时间 like '200_-_-_ 上午% ' )");
int count1 = Convert.ToInt32(checkcmd.ExecuteScalar());
if (count1 >0)为什么一执行到这里就跳过去!

下面是全部代码:

 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 的表名,默认值是sheet1or
            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);//连接数据
            GridView1.DataSource = ds;
            GridView1.DataBind();
            OleDbCommand checkcmd = new OleDbCommand("select count(*) from [" + tableName + "] where 日期时间 like '200_-_-_ 上午% ' or 日期时间 like '200_-_-_ 下午')");
            int count1 = Convert.ToInt32(checkcmd.ExecuteScalar());
            if (count1 >0)
            {
                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 selectcmd = new SqlCommand("select count(*) from DSQ  where 日期时间='" + 日期时间 + "'", conn);
                        int count = Convert.ToInt32(selectcmd.ExecuteScalar());
                        if (count > 0)
                        {
                            Response.Write("<script language='javascript'>alert('请不要重复导入!')</script>");
                            return;
                        }
                        else
                        {
                            SqlCommand insertcmd = new SqlCommand("INSERT INTO DSQ (部门,姓名,编号,日期时间,标识号,[签到/退],身份证号)  VALUES ('" + 部门 + "','" + 姓名 + "','" + 编号 + "','" + 日期时间 + "','" + 标识号 + "','"+签到+"','" + 身份证号 + "') ORDER BY 日期时间", conn);
                            insertcmd.ExecuteNonQuery();
                        }
                        //insertcount++;
                    }


                }
            }
            else
            {
                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 selectcmd = new SqlCommand("select count(*) from DSKF  where 日期时间='" + 日期时间 + "'", conn);
                        int count = Convert.ToInt32(selectcmd.ExecuteScalar());
                        if (count > 0)
                        {
                            Response.Write("<script language='javascript'>alert('请不要重复导入!')</script>");
                            return;
                        }
                        else
                        {
                            SqlCommand insertcmd = new SqlCommand("INSERT INTO DSKF (部门,姓名,登记号码,日期时间,机器号,编号,对比方式)  VALUES ('" + 部门 + "','" + 姓名 + "','" + 登记号码 + "','" + 日期时间 + "','" + 机器号 + "','" + 编号 + "','" + 对比方式 + "') ORDER BY 日期时间", conn);
                            insertcmd.ExecuteNonQuery();
                        }
                        //insertcount++;
                    }
                }
            }
            Response.Write("<script language='javascript'>alert('数据导入成功!')</script>");
        }
        catch
        {
            Response.Write("<script language='javascript'>alert('导入失败!');</script>");
        }
        finally
        {
            conn.Close();
        }

问题补充: 表中有数据!即使没有数据,也应该执行esle啊! 现在是一执行到那里直接跳catch 我用断点测试过了!
子夜星辰的主页 子夜星辰 | 小虾三级 | 园豆:1613
提问于:2008-11-24 15:41
< >
分享
最佳答案
0

跳到catch证明有错误发生了,和if和else都不再有关系

使用 catch (Exception ex) { throw(ex);} 来看看出了什么错吧,或者干脆先把try...catch去掉,这样才容易发现错误所在

丁学 | 专家六级 |园豆:18730 | 2008-11-24 16:06
其他回答(4)
0

因为你数据表里没有相应的数据,所以count是0吧

Gray Zhang | 园豆:17610 (专家六级) | 2008-11-24 15:47
0

"select count(*) from [" + tableName + "] where 日期时间 like '200_-_-_ 上午% ' )" 貌似最后多了一个 ) 应该是"select count(*) from [" + tableName + "] where 日期时间 like '200_-_-_ 上午%' "

West | 园豆:1095 (小虾三级) | 2008-11-24 16:07
0

直接加断点调试不就可以看到错误原因了

张荣华 | 园豆:2020 (老鸟四级) | 2008-11-24 17:51
0

west兄仔细啊!

Anders Liu | 园豆:230 (菜鸟二级) | 2008-11-24 18:39
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册