У меня есть это:
public DataSet HopDongTheoNhaCungCap(string MaNCC)
{
return db.MyExcuteSQL("SELECT MaHD, TenHD, ThoiHan, NCC from HopDongCungCap as c where c.NCC= 'NCC_01'", CommandType.Text, null);
}
И теперь я хочу перейти на:
public DataSet HopDongTheoNhaCungCap(string MaNCC)
{
return db.MyExcuteSQL("SELECT MaHD, TenHD, ThoiHan, NCC from HopDongCungCap as c where c.NCC= " + MaNCC, CommandType.Text, null);
}
но когда я обновляю значение для примера MaNCC MaNCC = "NCC_01", он поворачивается
SELECT MaHD, TenHD, ThoiHan, NCC from HopDongCungCap as c where c.NCC= NCC_01"
NCC_01 вот столбец не текст, пожалуйста, помогите мне
Да, параметризованный путь. Однако в ответ на ваш прямой вопрос проблема заключается в том, что во втором наборе кода вы не ставите кавычки вокруг строковой переменной. Должен быть
return db.MyExcuteSQL("SELECT MaHD, TenHD, ThoiHan, NCC from HopDongCungCap as c where c.NCC= '" + MaNCC + "'", CommandType.Text, null);
с кавычками вокруг переменной, которую вы добавляете.
Я использую
return db.MyExcuteSQL("spHopDongTheoNhaCungCap", CommandType.StoredProcedure, new SqlParameter("@MaNCC",MaNCC));
это мой sp:
ALTER PROCEDURE [dbo].[spHopDongTheoNhaCungCap]
-- Add the parameters for the stored procedure here
(@MaNCC NVARCHAR(50) )
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
SELECT MaHD, TenHD, ThoiHan, NCC from HopDongCungCap as c where c.NCC=@MaNCC
END
и это моя проблема
Procedure or function 'spHopDongTheoNhaCungCap' expects parameter '@MaNCC', which was not supplied.
Обратите внимание, что im использует threelayer, поэтому я не знаю, как сделать что-то вроде этого:
cmd.Parameters.AddWithValue(...);