簡體   English   中英

輸入字符串格式不正確...將字符串轉換為datetime時...錯誤?

[英]input string not in correct format…when converting a string to datetime…error?

我試圖將參數傳遞給sql選擇查詢。

出於某種原因,無論我嘗試什么,我都會遇到同樣的錯誤:輸入字符串不是核心格式

和建議:在將字符串轉換為datetime時,解析字符串以在將每個變量放入datetime對象之前獲取日期。

我很難過該做什么。 這是代碼。

sql查詢:

    ALTER PROCEDURE SearchAllPlayers
(
@personName,
@personPay,
@IDs
)

SELECT DISTINCT
                         person.personID, sports.sportsID, person.personName, person.personPay, sports.sport,

FROM            sports INNER JOIN
                person INNER JOIN
                personSport ON personSport.personID = person.personID
                       INNER JOIN
                personSport ON personSport.sportID = sports.sportsID

WHERE        (person.personName LIKE '%' + @personName + '%')
              AND
             (person.personPay >= @personPay OR 0 = @personPay)
              AND
             (person.regDate >= { fn CURDATE() }
              AND
             (sports.sportID IN
                    (SELECT   ID FROM dbo.fnSplitter(@IDs) AS fnSplitter_1) OR @IDs = 0)

代碼隱藏:

protected void Button1_Click(object sender, EventArgs e)
{
    searchGrid();
}

protected void searchGrid()
{
    SqlConnection conn = new SqlConnection(connSTR);
    com = new SqlCommand();
    conn.Open();

    com.Connection = conn;

    com.CommandText = "SearchAllPlayers";
    com.CommandType = CommandType.StoredProcedure;

    string StringWithDelimiter = string.Empty;
    for (int i = 0; i < DropDownCheckBoxes1.Items.Count; i++)
    {
        if (DropDownCheckBoxes1.Items[i].Selected)
            StringWithDelimiter += DropDownCheckBoxes1.Items[i].Value + ";";
    }

    com.Parameters.Add("@personName", SqlDbType.VarChar).Value = personName.Text;

    //next line is where I am having problems
    com.Parameters.Add("@personPay", SqlDbType.Decimal).Value = ??????
    com.Parameters.Add("@IDs", SqlDbType.VarChar).Value = StringWithDelimiter;

 so far i've tried the following combinations, all to know avail.


com.parameters.add("@playerPay", sqldbtype.decimal).value = playerPayTextBox.Text;

這似乎不起作用,我得到以下錯誤:“將數據類型nvarchar轉換為十進制時出錯。”

所以我試過這個:

com.parameters.add("@playerPay", sqldbtype.decimal).value = playerPayTextBox.tostring();

我得到相同的錯誤:“將數據類型nvarchar轉換為十進制時出錯。”

這是有道理的,所以我試過:

com.parameters.add("@playerPay", sqldbtype.decimal).value = decimal.parse(playerPayTextBox.tostring());

錯誤:“輸入字符串的格式不正確。” - 然后是日期時間的事情......

com.parameters.add("@playerPay", sqldbtype.decimal).value = decimal.parse(playerPayTextBox.text);

錯誤:“輸入字符串的格式不正確。” - 然后是日期時間的事情......

com.parameters.add("@playerPay", sqldbtype.decimal).value = convert.todecimal(playerPayTextBox.text);

錯誤:“輸入字符串的格式不正確。” - 然后是日期時間的事情......

com.parameters.add("@playerPay", sqldbtype.decimal).value = convert.todecimal(playerPayTextBox.text);

錯誤:“輸入字符串的格式不正確。” - 然后是日期時間的事情......

不知道該怎么辦

確保您的輸入字符串使用小數點符號表示您當前的文化! 如果您的輸入字符串與這些規則不匹配,則decimal.Parse會拋出Input字符串格式不正確的異常

例如,如果您使用不變文化:

decimal.Parse("17.5", CultureInfo.InvariantCulture)

該點將是可接受的小數點。

您可以在MSDN上閱讀有關它的更多信息

他們還提到decimal.TryParse方法更適合不變的文化解析

(顯然),確保您的輸入字符串不為空,空或包含任何非數字字符(除了一個,可選,點或逗號,取決於您的文化)

暫無
暫無

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

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