[ad_1]
SQL サーバーで、次の sproc を作成しました。
SQL
CREATE PROCEDURE [dbo].[GetOutletInfo] @PermitID int AS SELECT * FROM Outlets WHERE PermitID=@PermitID GO
次に、C# コードでこれを実行します。
C#
var cn = new SqlConnection(connectionString); SqlDataAdapter da; DataSet ds = new DataSet(); da = new SqlDataAdapter("GetOutletInfo", cn); da.SelectCommand.CommandType = CommandType.StoredProcedure; da.SelectCommand.Parameters.Add("@PermitID", SqlDbType.Int).Value = PermitID; da.Fill(ds, "GetOutletInfo");
実行時に、da.Fill は次の例外をスローします。
System.FormatException
HResult=0x80131537
メッセージ=パラメータ値を String から Int32 に変換できませんでした。
ソース=System.Data.SqlClient
私はグーグルで何時間も頭を悩ませてさまざまなことを試しましたが、成功しませんでした。 A何かご指摘や洞察をいただければ幸いです。 ありがとう
私が試したこと:
This query works (since it does not need a parameter) SqlDataAdapter da; DataSet ds = new DataSet(); da = new SqlDataAdapter("GetInspectionLettersQueue", cn); da.SelectCommand.CommandType = CommandType.StoredProcedure; da.Fill(ds, "GetInspectionLettersQueue");
Parameters.Add コマンドにパラメータを追加する前に、パラメータを int32 にキャストしようとしましたが、機能しませんでした。
解決策 1
そうですね、もっとコーヒーが必要だと思います。 PermitID は文字列ですが、「foo」に設定されていることが判明しました。当然のことですが、調べてくれてありがとう。「42」に設定すると機能しました。
私も感じません
解決策 2
SQL を覚えていると、パラメーターの型はすべて整数ではなく文字列である必要があります。 それを試してみてください。
[ad_2]
コメント