【问题标题】:SQL Server query Insert into select and new dataSQL Server查询插入选择和新数据
【发布时间】:2018-02-03 07:46:21
【问题描述】:

我需要对我在 C# 和 SQL Server 中的查询进行一些更正。

我有一个名为LoggedIn 的表,其中包含名称、密码和时钟列。我希望它插入到名称和密码来自另一个表的表中,并且时钟是现在的当前时间。

string belepve = "INSERT INTO LoggedIn VALUES (SELECT name, password FROM Login WHERE password =" + Kod.login1 +" ,@MyDate";

SqlCommand command4 = new SqlCommand(belepve, con);

command4.Parameters.AddWithValue("@MyDate", DateTime.Now);

然后我只是执行查询。

【问题讨论】:

  • 什么是, @date 查询结束?

标签: c# sql-server insert-into


【解决方案1】:

这里有多个问题。

第一个是第二个参数也应该是SqlParameter

其次,你最后缺少括号。

第三,您需要在LoggedIn 表中指定值所在的列名。

您的工作代码将类似于:

string belepve = @"INSERT INTO LoggedIn (name,password,LoginDate) 
                          VALUES (SELECT name,password,@MyDate 
                                  FROM Login 
                                  WHERE password =@Password
                                  )";

SqlCommand command4 = new SqlCommand(belepve, con);

 command4.Parameters.AddWithValue("@MyDate", DateTime.Now);
 command4.Parameters.AddWithValue("@Password", Kod.login1);

假设您在 LoggedIn 表中有名为 namepasswordLoginDate 的列,您可能需要调整表中实际存在的列名。

如果您已经选择了相同数量的列,那么您可以更简单地执行以下操作:

SELECT name,password,@MyDate 
INTO LoggedIn
FROM Login 
WHERE password =@Password

但是您需要注意选择列的顺序,否则值可能会出现在与预期不同的列中。 希望对您有所帮助。

【讨论】:

  • 我在某处读到,如果我填写表格的所有列,我不必指定列。这不是真的吗?!
  • 是的,如果我们在 select 中有列,那么您可以,但最好指定,否则如果未仔细指定顺序,name 值可能会插入到 password 列中。
  • @MártonGergő 我还添加了另一种方法,如果您正确指定列的顺序,它可能会更干净。
猜你喜欢
  • 2013-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多