3

私はこのサイトを検索し、私の問題に関するいくつかのトピックを見つけましたが、それでもこれを機能させることはできません....

ストアド プロシージャを使用して SQL Server データベースからデータを取得しようとしています。型である 1 つのパラメーターを渡してSqlDbType.Varchar(50)いますが、SQL エラーが返されます。

プロシージャまたは関数 'WyszukajPrzesylki' には、指定されていないパラメーター '@Nazwisko' が必要です。

私は何を間違っていますか?SSMSでテストすると、ストアプロシージャが機能します...

入力しても機能します

SqlCommand com = new SqlCommand("WyszukajPrzesylki @Nazwisko = Example", con);

あなたは私の最後の希望です...私はすでにこの問題で2日を失い、それ以上先に進むことができません... c#を使用してレコードを挿入および更新することに問題はありません...これだけ....

これがSPのコードです

ALTER PROCEDURE [dbo].[WyszukajPrzesylki] 
-- Add the parameters for the stored procedure here
@Nazwisko varchar(50)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

-- Insert statements for procedure here
-- SELECT * FROM Przesylki WHERE (NazwiskoAdresata = @NazwiskoAdresata)
SELECT * FROM Przesylki WHERE (Przesylki.NazwiskoAdresata = @Nazwisko)
END

ボタンのアクション:

SqlConnection con = new SqlConnection(Properties.Settings.Default.Monitoring_PrzesylekString1);
SqlCommand com = new SqlCommand("WyszukajPrzesylki", con);
com.CommandType = CommandType.StoredProcedure;
SqlParameter parametrNazwisko = new SqlParameter("@Nazwisko", SqlDbType.VarChar, 50);
parametrNazwisko.Value = "Dziubak";
com.Parameters.Add(parametrNazwisko);

SqlDataAdapter ad = new SqlDataAdapter(com.CommandText, con);
DataSet ds = new DataSet();

ad.Fill(ds, "id");
con.Close();
DataTable datatableA = ds.Tables[0];
dataGridView1.DataSource = ds;
dataGridView1.DataMember = "id";
4

1 に答える 1

1

あなたはほとんどすべてを正しくやっています - この行まで:

SqlDataAdapter ad = new SqlDataAdapter(com.CommandText, con);

SQL データ アダプターを作成していますが、の SQL ステートメントにのみ基づいていますcom。代わりにこれを使用する必要があります。

SqlDataAdapter ad = new SqlDataAdapter(com);

SQL ステートメントのテキストだけでなくcom、パラメーターとすべてを使用して既に設定したオブジェクト全体を使用する必要があります。

于 2012-12-14T19:52:58.857 に答える