【问题标题】:I get the error "must declare the scalar value @time" for this code. Need a help for fixing it我收到此代码的错误“必须声明标量值@time”。需要帮助来修复它
【发布时间】:2018-06-23 10:30:00
【问题描述】:

我收到此代码的错误“必须声明标量值@time”。我只是想导入本地时间并将其存储在表中。 Logged_in 列的数据类型为datetime

obj.conn.Open();

DateTime localdate = DateTime.Now;

string time = localdate.ToString("MM'/'dd'/'yyyy HH':'mm':'ss.fff");

string loggedintime = "INSERT INTO UserAccountTable(Logged_in) values (@time)";

obj.cmd.Connection = obj.conn;

obj.cmd.CommandText = loggedintime;

obj.cmd.ExecuteNonQuery();

obj.conn.Close();

【问题讨论】:

  • 你需要使用SqlParameters
  • @omriman12 怎么样?.. 我需要获取本地日期和时间
  • 发布了答案
  • @omriman12 我是新来的。请用cmets解释代码。
  • 看我贴的答案.....我写了整个代码

标签: c# sql sql-server visual-studio


【解决方案1】:

您缺少参数:

cmd.Parameters.AddWithValue("@time", time );

看在上帝的份上,放弃你的联系:

string commandText = "INSERT INTO UserAccountTable(Logged_in) values (@time)";

using (SqlConnection connection = new SqlConnection(connectionString))
{
    SqlCommand command = new SqlCommand(commandText, connection);
    cmd.Parameters.AddWithValue("@time", time );


    try
    {
        connection.Open();
        Int32 rowsAffected = command.ExecuteNonQuery();
        Console.WriteLine("RowsAffected: {0}", rowsAffected);
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message);
    }
}

而且您也不需要将日期解析为字符串!

简单地使用DateTime,确保它在你的数据库中是一个日期字段!

【讨论】:

  • 不要使用懒惰且容易出错的addwithvalue。如果您建议不要将用户输入的值作为字符串获取,那么这应该反映在您的代码中。
  • 建议 OP 使用 time 作为参数而不是正确的变量类型是有问题的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多