gpt4 book ai didi

sql-server - 无法将字符串参数传递给存储过程

转载 作者:行者123 更新时间:2023-12-02 03:52:22 25 4
gpt4 key购买 nike

我搜索了这个网站,发现了一些关于我的问题的主题,但仍然无法解决这个问题....

我只是尝试使用存储过程从 SQL Server 数据库中检索数据。我正在传递一个 SqlDbType.Varchar(50) 类型的参数,但我返回了一个 SQL 错误:

Procedure or function 'WyszukajPrzesylki' expects parameter '@Nazwisko', which was not supplied.

我做错了什么?如果我在 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

和按钮的 Action :

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";

最佳答案

您几乎做对了所有事情 - 直到这一行:

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

您正在创建一个 SQL 数据适配器,但仅基于 com 的 SQL 语句 - 您应该改用它:

SqlDataAdapter ad = new SqlDataAdapter(com);

您应该使用您已经设置了参数和所有内容的整个 com 对象 - 只是 SQL 语句文本!

关于sql-server - 无法将字符串参数传递给存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13885326/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com