C# 作为参数插入查询时的SysDateTime()

C# 作为参数插入查询时的SysDateTime(),c#,sql,C#,Sql,这是一个场景: 我需要在数据库中插入一些行,其中一列是DateTime类型,它的值是SysDateTime,通常我的查询如下所示 String sqlString = "INSERT INTO Temas(Id, Level,Date, Description) " + " VALUES (100, 3, SYSDATETIME() , 'Text ')"; 现在我必须使用参数进行插入,现在看起来如下所示: private void Inser

这是一个场景:

我需要在数据库中插入一些行,其中一列是DateTime类型,它的值是SysDateTime,通常我的查询如下所示

String sqlString = "INSERT INTO Temas(Id, Level,Date, Description) " + 
                        " VALUES (100, 3, SYSDATETIME() , 'Text ')";
现在我必须使用参数进行插入,现在看起来如下所示:

private void InsertTemaInTesauro(OleDbDataReader origenReader,Materias materia)
    {
        SqlConnection connectionEpsOle = Conexiones.GetConecction();
        SqlDataAdapter dataAdapter;

        DataSet dataSet = new DataSet();
        DataRow dr;

            string sqlCadena = "SELECT * FROM Temas WHERE idTema = 0";
            dataAdapter = new SqlDataAdapter();
            dataAdapter.SelectCommand = new SqlCommand(sqlCadena, connectionEpsOle);

            dataAdapter.Fill(dataSet, "Temas");

            dr = dataSet.Tables["Temas"].NewRow();
            dr["Id"] = 100;
            dr["Level"] = 3;
            dr["Date"] = ????;
            dr["Description"] = 'Some text';

            dataSet.Tables["Temas"].Rows.Add(dr);

            //dataAdapter.UpdateCommand = connectionEpsOle.CreateCommand();
            dataAdapter.InsertCommand = connectionEpsOle.CreateCommand();
            dataAdapter.InsertCommand.CommandText =
                                                   "INSERT INTO Temas(Id,Level,Date,Description) (@Id,@Level,@Date,@Description)";

            dataAdapter.InsertCommand.Parameters.Add("@Id", SqlDbType.Numeric, 0, "Id");
            dataAdapter.InsertCommand.Parameters.Add("@Level", SqlDbType.Numeric, 0, "Level");
            dataAdapter.InsertCommand.Parameters.Add("@Date", SqlDbType.DateTime, 0, "Date");
            dataAdapter.InsertCommand.Parameters.Add("@Description", SqlDbType.Numeric, 0, "Description");

            dataAdapter.Update(dataSet, "Temas");

            dataSet.Dispose();
            dataAdapter.Dispose();
            connectionEpsOle.Close();
    }

我的问题是如何设置date参数以获取sysdatetime()的值,我无法将其设置为列的默认值,因为我无法访问数据库,也无法使用DateTime。现在,由于老板想要数据库的时间,我非常确定您可以简单地执行以下操作:

dataAdapter.InsertCommand.CommandText = 
   "INSERT INTO Temas(Id,Level,Date,Description) (@Id,@Level,SYSDATETIME(),@Description)"
你能做到吗


dataAdapter.InsertCommand.CommandText=“插入Temas(Id、级别、日期、说明)(@Id、@Level、SYSDATETIME(),@Description)”

你能试试这个吗?我现在正在打电话,所以这可能不是确切的答案,但你会得到它-

dataAdapter.InsertCommand.CommandText = "INSERT INTO Temas(Id,Level,Date, Description) (@Id,@Level, SYSDATETIME(), @Description")";

先运行一个查询来获取SysDateTime怎么样?问题的目的没有多大意义。参数用于将值从代码传递到查询。如果要在查询中使用
SYSDATETIME()
的值,则只需在查询中使用
SYSDATETIME()
,并对其他所有内容使用参数即可。为什么要千方百计寻找一个比现有解决方案效率更低的解决方案呢?为什么不直接使用:
DateTime。如果您想从客户端提供日期/时间,那么现在就为参数使用
。如果要使用服务器时间,请不要在此处使用参数。。改用
SYSDATETIME()
,就像以前一样。这是完全正确的。在您的情况下,要使用参数化查询,您可能需要运行另一个查询,如
select sysdatetime()
,从数据库服务器获取日期时间,然后将其分配给
@Date
参数。@jlr您作为Garret Vlieger是正确的,有时我们会寻找我们已经有的解决方案