Переменный текст в sql для C #

1

У меня есть это:

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 вот столбец не текст, пожалуйста, помогите мне

  • 1
    Попробуйте использовать Parameterized SQL вместо того, какую базу данных вы используете ??
  • 0
    Вы пропускаете одинарные кавычки вокруг значения.
Показать ещё 3 комментария
Теги:

2 ответа

1

Да, параметризованный путь. Однако в ответ на ваш прямой вопрос проблема заключается в том, что во втором наборе кода вы не ставите кавычки вокруг строковой переменной. Должен быть

        return db.MyExcuteSQL("SELECT MaHD, TenHD, ThoiHan, NCC from HopDongCungCap as c where c.NCC= '" + MaNCC + "'", CommandType.Text, null);    

с кавычками вокруг переменной, которую вы добавляете.

  • 0
    @Cuong Если этот ответ решил вашу проблему (вы уверены, что не хотите параметризованных запросов?), Отметьте его как принятый. Спасибо!
  • 0
    Вы имеете в виду использовать процедуру магазина?
Показать ещё 2 комментария
0

Я использую

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(...);
  • 0
    Здравствуйте, так как это не ответ, вы бы отредактировали свой вопрос и разместили там свои обновления ..?
  • 0
    Кроме того, вам не нужно ставить знак "@" в C # Посмотрите на это: dotnetperls.com/sqlparameter

Ещё вопросы

Сообщество Overcoder
Наверх
Меню