更新时间:2023-01-29 11:49:36
尝试:
Try:
using (SqlConnection con = new SqlConnection(strConnect))
{
con.Open();
using (SqlCommand cmd = new SqlCommand("SelectRecord", con))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@lastname", "Smith");
cmd.Parameters.AddWithValue("@firstname", "John");
cmd.Parameters.AddWithValue("@SelectOption", "Firstname");
using (SqlDataReader read = cmd.ExecuteReader())
{
while (read.Read())
{
...
}
}
}
}
OriginalGriff的回答是正确的。
但是,你也应该像这样简化你的查询:
OriginalGriff's answer is correct.
However, you should also simplify your query like this:
SELECT
b.id AS ID,
b.firstname As FIRSTNAME,
b.lastname AS LASTNAME,
b.middlename AS MIDDLENAME,
w.class_name AS CLASS,
p.passport_img AS PASSPORT
FROM
base_user_details b Left JOIN passport p ON
b.id = p.id
LEFT JOIN ward_class w ON
b.id=w.id
WHERE
(@SelectOption == 'class' AND b.class_name = @filter)
OR (@SelectOption == 'Firstname' AND b.firstname = @filter)
OR (@SelectOption == 'Lastname' AND b.lastname = @filter)
像这样用可变长度编写SQL查询,......:)
write SQL query like this with variable length,, ... :)
--exec [dbo].[SelectRecord] 'Firstname'
Alter PROCEDURE [dbo].[SelectRecord]
@SelectOption Varchar(50)='',
@lastname Varchar(50) = null,
@firstname Varchar(50) = null,
@class Varchar(50) = null
AS
BEGIN
if(@SelectOption='Lastname')
BEGIN
SELECT 'LastName'
END
ELSE IF(@SelectOption='Firstname')
BEGIN
SELECT 'FirstName'
END
ELSE IF(@SelectOption='class')
BEGIN
select 'Class'
END
END
现在从后面的代码正确传递你的@SelectOption变量
now pass your @SelectOption variable correctly from code behind