我有一个简单的搜索代码
我的存储过程:
CREATE PROCEDURE [dbo].[sptest]
(
@model NVARCHAR (20)
)
AS
begin
SELECT * from table where model = @model
end
我在c#中的代码:
SqlCommand comm = new SqlCommand();
comm.CommandType = CommandType.StoredProcedure;
comm.Connection = con;
comm.CommandText = "sptest" ;
comm.Parameters.Add("@model", SqlDbType.Int).Value = textBox1.Text;
如果我删除此行:
comm.Parameters.Add("@model", SqlDbType.Int).Value = textBox1.Text;
我的代码运行没有错误!!
但是当我添加这一行时,visual studio会显示错误:
程序sptest没有提供参数和参数。
我的错误在哪里?
答案 0 :(得分:1)
您的存储过程需要NVARCHAR(20)
参数,并且您传递INT
。这就是问题。因此,我建议您更改传递给SqlDbType.NVarChar
的参数类型。
comm.Parameters.Add("@model", SqlDbType.NVarChar, 20).Value = textBox1.Text;
答案 1 :(得分:0)
您的代码:
SqlCommand comm = new SqlCommand();
comm.CommandType = CommandType.StoredProcedure;
comm.Connection = con;
comm.CommandText = "sptest" ;
comm.Parameters.Add("@model", SqlDbType.Int).Value = textBox1.Text;
...
编辑后:
SqlCommand comm = new SqlCommand();
comm.CommandType = CommandType.StoredProcedure;
comm.Connection = con;
comm.CommandText = "sptest" ;
comm.Parameters.Add("@model", SqlDbType.NVarChar,20).Value = textBox1.Text;
...
试试这个。
答案 2 :(得分:0)
参考以下代码
CREATE PROC SPTest
(
@model NVARCHAR (20)
)
AS
BEGIN
SET NOCOUNT ON
SELECT * FROM <<TABLE_NAME>> WHERE model = @model
END
C#代码
SqlConnection con = new SqlConnection("<<ConnectionStringValue>>");
con.Open();
SqlCommand com = new SqlCommand();
com.Connection = con;
com.CommandType = CommandType.StoredProcedure;
com.CommandText = "SPTest";
com.Parameters.Add("@model", SqlDbType.NVarChar, 20).Value = "<Parameter Value>";
SqlDataReader reader = com.ExecuteReader();
Rest Of Code Goes Here
...
...
...