パラメータをSQL選択クエリに渡そうとしています。
何らかの理由で、何を試しても同じエラーが発生し続けます:入力文字列が正しい形式ではありません
提案: 文字列を日時に変換するときは、各変数を日時オブジェクトに入れる前に、文字列を解析して日付を取得します。
私は何をすべきか困惑しています。これがコードです。
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 を 10 進数に変換中にエラーが発生しました。」
だから私はこれを試しました:
com.parameters.add("@playerPay", sqldbtype.decimal).value = playerPayTextBox.tostring();
同じエラーが表示されます:「データ型 nvarchar を 10 進数に変換中にエラーが発生しました。」
これは理にかなっているので、試してみました:
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);
エラー: 「入力文字列の形式が正しくありませんでした。」-それから日時のこと...
何をすべきかわからない