簡體   English   中英

在C#.net中將字符串轉換為int數據類型

[英]Convert string to int datatype in c# .net

我正在使用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。 當錯誤數據提供給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,而是會看到一個布爾值,表明它是否成功。

因此,從您的示例來看,就像這樣...

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
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM