在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);

我是不是错过了什么?有人能帮我吗?

在c#.net中将字符串转换为int数据类型

您遇到的问题:

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
}