在c#.net中将字符串转换为int数据类型
本文关键字:转换 int 数据类型 字符串 net | 更新日期: 2023-09-27 18:24:49
我正在使用Microsoft SQL Server Management Studio和C#.net
我的代码从webBrowser获取字符串数据,将其存储在文本框中,将其与数据库中的值进行比较,并获得该字符串对应的int ID。现在,这个int ID显示在一个文本框中(可选),然后存储在我的数据库中的另一个表中。
我的代码如下:
string p = dComm.executeScalar("select StateID from StateMaster where StateCode='" + txtState.Text + "'");
textBox1.Text = p;
Convert.ToInt32(p);
这将获取StateID
,并将其显示在文本框中。然后,我从数据库中打开另一个表,并将值如下所示。
dTbl = dComm.openDataTable("CompanyMaster", "select * from CompanyMaster where 1=0 ");
DataRow dRow;
dRow = dTbl.NewRow();
dRow["StateID"] = p;
现在,当我在页面的HTML文件上运行代码时,这段代码运行得非常好,但如果我试图直接从web浏览器运行它,它会给出一个错误
输入字符串的格式不正确
错误显示在以下行:
Convert.ToInt32(p);
我是不是错过了什么?有人能帮我吗?
您遇到的问题:
Convert.To是一项相对艰巨的工作,在我看来,当输入可能来自最终用户时,不应该使用它当坏数据被提供给Convert.to时,它会产生无法很好处理的异常。
例如:
textbox1.Text = "test";
Convert.ToInt32(textbox1.text);
它会崩溃和燃烧。
我建议您进入使用TryParse的例程,它可以更好地处理坏值。
示例:
int test = 0;
int.TryParse(textbox1.text, out test)
{
//do validation with if statements
}
这将消除任何坏数据,并确保最终用户只能获得您自己编写的用户友好的消息框。这意味着你可以告诉他们在哪里输入了错误的值,这样他们就可以在程序不崩溃和烧录的情况下进行更正。
请尝试使用Int32.Parse(p)
。如果你不想在失败的解析中出现异常,你也可以使用TryParse,相反,你会得到一个bool,显示它是否成功。
所以从你的例子来看,它会是这样的。。。
string p = dComm.executeScalar("select StateID from StateMaster where StateCode='" + txtState.Text + "'");
textBox1.Text = p;
int pInt = Int32.Parse(p);
或者,如果你想使用TryParse,它会是这样的。。。
string p = dComm.executeScalar("select StateID from StateMaster where StateCode='" + txtState.Text + "'");
textBox1.Text = p;
int pInt;
if(!Int32.TryParse(p, out pInt))
{
//Parsing failed, do something about it
}