ВЫБЕРИТЕ внутри запроса INSERT? - PullRequest
0 голосов
/ 11 декабря 2010

Я пытаюсь вставить идентификатор пользователя из пользователей таблицы в сеанс таблицы, поле session_user, используя текстовое поле, но, похоже, это не работает ..

Вот мой код SQL, я использую Visual Studio и пытаюсь вставить в таблицу SQL Server

SqlCommand addsession = new SqlCommand
  ("insert into dbo.session(session_user) 
    values (select user_id from dbo.users where username = '" + TextBox1.Text + "')", 
   badersql);

Ответы [ 4 ]

6 голосов
/ 11 декабря 2010

Вы не должны использовать ключевое слово VALUES, когда делаете INSERT ... SELECT:

insert into dbo.session (session_user) select user_id from dbo.users ...
4 голосов
/ 11 декабря 2010

Если вы вставляете результат запроса в другую таблицу, просто пропустите ключевое слово VALUES.

Ключевое слово VALUES может всегда быть заменено простым SELECT 'dummy', 'value' значением, которое вы хотите вставить, но я предлагаю вам по-прежнему использовать VALUES всякий раз, когда вы хотите дать понять, что ваш результаты не получены из запроса.

При этом, , пожалуйста используйте параметризованных запросов !! Представьте, если кто-то введет следующий текст в TextBox1:

' or 1 = 1

Что будет?

2 голосов
/ 11 декабря 2010

Чтобы вставить записи из запроса, используйте следующий синтаксис:

insert into dbo.session (session_user) 
select user_id from dbo.users where username = '" + TextBox1.Text + "'

Возможно, вы захотите сделать select top 1 userid, если вы ожидаете, что одна строка будет вставлена, как в операторе значений.

0 голосов
/ 12 декабря 2010

Я сделал это, проблема была в том, что я не могу назвать свою запись session_user, поэтому я заменил на se_user, и это решило проблему.

спасибо всем за помощь

поэтому правильный оператор sql

insert into sessions (se_user) select USER_ID from users where username = '';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...