[英]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.