请教:根据数据库查询结果,经函数操作后自动显示数据,为什么时行时不行?
问题:现有一个数据表: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