C# 选择内部插入查询?

C# 选择内部插入查询?,c#,sql-server,visual-studio-2010,C#,Sql Server,Visual Studio 2010,我试图使用textbox在table session、field session\u user中插入来自table users的用户id,但它似乎不起作用 这是我的SQL代码,我正在使用visual studio并尝试插入到SQL Server表中 SqlCommand addsession = new SqlCommand ("insert into dbo.session(session_user) values (select user_id from dbo.users w

我试图使用textbox在table session、field session\u user中插入来自table users的用户id,但它似乎不起作用

这是我的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);

在执行
插入时,不应使用
关键字。。。选择

insert into dbo.session (session_user) select user_id from dbo.users ...

如果要将查询结果插入到另一个表中,只需省去
VALUES
关键字即可

VALUES
关键字总是可以被一个简单的
SELECT'dummy',value'
替换,但是我建议您仍然使用
VALUES
来明确您的结果不是来自查询

话虽如此,请使用!!想象一下,如果有人在TextBox1中输入以下文本:

”或1=1


会发生什么情况?

要从查询中插入记录,请使用以下插入语法:

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

如果希望像values语句中那样插入一行,您可能需要执行
选择前1个userid

我这样做了,问题是我无法命名我的记录会话用户,因此我将其替换为se\u user,这就解决了问题

谢谢大家的帮助

因此正确的sql语句是

insert into sessions (se_user) select USER_ID from users where username = '';

您应该尽一切可能使用参数化查询,而不是将INSERT语句连接在一起……SqlCommand ADDSCESSION=new SqlCommand(“INSERT into dbo.session(session_user)从dbo.users中选择user_id,其中username='“+TextBox1.Text+”,badersql),我试图这样做,但它给了我这个错误“关键字'session_user'附近的语法不正确”。谢谢提示,但这个项目将在我的计算机上本地进行,现在或将来不会在internet上使用,我知道参数化查询是正确的做法,但现在不需要使用它们,再次感谢如果您发布代码或XML,请在文本编辑器中突出显示这些行,并单击编辑器工具栏上的“代码”按钮(101 010),以很好地格式化和语法突出显示它!