日期:2014-05-17  浏览次数:20546 次

请教为何定义的变量没有顺利赋值~?


        DB db = new DB();
        int i;
        string lsql = "select max([ID]) from AttachmentTab";
        SqlConnection con = db.GetCon();
        con.Open();
        SqlCommand cmd = new SqlCommand(lsql, con);
        SqlDataReader Qcmd = cmd.ExecuteReader();
        while (Qcmd.Read())
        {
            //Label3.Text = Qcmd[0].ToString();
            i = int.Parse(Qcmd[0].ToString()) + 1;
        }
        Qcmd.Close();
        con.Close();

        ///创建文件目录
        string sPath = Server.MapPath(".") + "/upload/" + DateTime.Now.ToString("yyyy-MM").Replace("-", "") + "/"+i.ToString();


请教该如何修改才能对i正确赋值???

------解决方案--------------------


        DB db = new DB();
        string lsql = "select max([ID]) from AttachmentTab";
        SqlConnection con = db.GetCon();
        con.Open();
        SqlCommand cmd = new SqlCommand(lsql, con);
        int i = Convert.ToInt32(cmd.ExecuteScalar());
        con.Close();

------解决方案--------------------
原因是你那句sql 可能查不出数据,然后就不会执行sqldatareader,也就不会走到while(read)里面,着就是为什么你的i没有赋值。
------解决方案--------------------
定义变量i的时候你可以 int i=1;
如果说while没有数据循环的时候i也就没有赋值了。
------解决方案--------------------
int i;

=》

int i=0;