当前位置:编程学习 > C#/ASP.NET >>

请教:根据数据库查询结果,经函数操作后自动显示数据,为什么时行时不行?

问题:现有一个数据表:
SP_ID   SP_01   SP_02
1        01       01
2        02       01
字段SP_ID数据类型INT自动增长,为索引。字段SP_01和SP_02的数据类型均为nvarchr。

我要实现效果如营业厅里的自动取号功能。
例如:当用户选择编号[SP_01]为01的项目时,页面将通过Page_Load根据数据表中的[SP_02]的值自动+1,完成取号,并将结果显示在页面中。查询条件[SP_01]的值由上一个页面传值得到。代码如下:
-------------------------------------------------------------------------------------
public partial class Zhujichang_ZGet : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

        TextBox1.Text = Request.QueryString["id_1"];

        if (!IsPostBack)
        {
            string sqlStr = "Server=sha;DataBase=db_Student;User id=sa;Pwd=";
            SqlConnection con = new SqlConnection(sqlStr);
            con.Open();
            if (TextBox1.Text != null)
            {
                string a = "-";
                string cmdStrMaxID = "select Max(SP_02) From tb_SusPro where SP_01='" + TextBox1.Text.Trim() + "'";
                SqlCommand cmdMaxID = new SqlCommand(cmdStrMaxID, con);
                SqlDataReader drNew = cmdMaxID.ExecuteReader();
                if (drNew.HasRows)
                {
                    while (drNew.Read())
                    {
                        int i = int.Parse(drNew[0].ToString()) + 1;
                        if (i < 10)
                        {
                            int k = 0;
                            this.Label6.Text = k.ToString() + i.ToString();
                        }
                        else
                        {
                            this.Label6.Text = i.ToString();
                        }
                    }
                }
                else
                {
                    int j = 1;
                    int s = 0;
                    this.Label6.Text = TextBox1.Text.ToString().Trim() + a + s.ToString() + j.ToString();
                }
                drNew.Close();
            }

            con.Close();
        }

    }
}
-------------------------------------------------------------------------
运行的结果:
1、当参数id_1的传值如01或02在数据表中有现成的话,程序可以成功完成操作;
2、当参数id_1的传值如03或04等在数据表原数据中没有的话,程序就不能成功完成操作。
报错:int i = int.Parse(drNew[0].ToString()) + 1;   该行 输入字符串的格式不正确。

请问是何原因?谢谢 --------------------编程问答-------------------- 你看看drNew[0]这个里面数据是什么的,就知道问题的了 --------------------编程问答-------------------- nvachar型的01转换成数字后如果变成01的话,而不是1的话,01+1=?会变成02?能取出数据才怪。 --------------------编程问答-------------------- 楼主的结贴率是亮点啊

int i = int.Parse(drNew[0].ToString()) + 1;
改用
int i=Convert.ToInt32(drNew[0].ToString())+1; --------------------编程问答-------------------- 按照3#的意见,我试了一下也是不行,错误相同。

请问有谁能够解决?谢谢 --------------------编程问答-------------------- 空值当然报错 --------------------编程问答-------------------- 那请问要实现目标,在程序上应该怎样处理呢?
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,