C# 作为参数插入查询时的SysDateTime()
这是一个场景: 我需要在数据库中插入一些行,其中一列是DateTime类型,它的值是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
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是正确的,有时我们会寻找我们已经有的解决方案