C# 当我们每次向数据库插入数据时,在asp.net中显示插入日期

C# 当我们每次向数据库插入数据时,在asp.net中显示插入日期,c#,asp.net,C#,Asp.net,当我将数据插入数据库时,我还需要插入日期,但我在此查询中传递了一个插入查询我插入了数据,但默认情况下它采用了日期列SQL数据库日期格式,但我希望在用户输入数据以插入数据库时显示我要显示的日期我尝试过的查询是: string s = "insert into BatchPermissons(BatchId,SubjectId,AuditoName,AudioID,CreatedBy,CreatedDate) values(" + batchno + ", " + subjectid + " , '

当我将数据插入数据库时,我还需要插入日期,但我在此查询中传递了一个插入查询我插入了数据,但默认情况下它采用了日期列SQL数据库日期格式,但我希望在用户输入数据以插入数据库时显示我要显示的日期我尝试过的查询是:

string s = "insert into BatchPermissons(BatchId,SubjectId,AuditoName,AudioID,CreatedBy,CreatedDate) values(" + batchno + ", " + subjectid + " , '" + AudiotoName + "', " + AudioId + ",'" + CBY + "'," + DateTime.Now.ToString() + ")";
SqlCommand cmd = new SqlCommand(s, con);
cmd.CommandType = CommandType.Text;
cmd.Connection = con;
con.Open();
cmd.ExecuteNonQuery();
con.Close();

但是上面的查询在数据库中插入默认日期。我需要在插入数据时插入特定日期将被存储。任何人都可以帮助我

您可以将
DateTime.Now.ToString()
替换为
“getdate()”
。这将从SQL server获取日期。或将格式添加到
ToString

DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");

如果您的数据库列类型是
datetime
,请尝试像这样直接插入
datetime
-

string s = "insert into BatchPermissons(BatchId,SubjectId,AuditoName,AudioID,CreatedBy,CreatedDate) values(" + batchno + ", " + subjectid + " , '" + AudiotoName + "', " + AudioId + ",'" + CBY + "'," + DateTime.Today + ")";

如果输入的日期始终为当前日期,则可以使用sql方法填充该值。如果不是,则必须以正确的格式提供日期,这意味着在
中的“yyyy-MM-dd HH:MM:ss”
中,使用
.ToString()
更改格式很简单,因此查询将是:

string s = "insert into BatchPermissons(...,CreatedDate) values(...," + getdate() + ")"; // using standard method date

特别说明:

我们是否可以停止使用
纯文本
查询,开始编写参数化查询?因此,我们可以避免不必要的格式化异常,同时还可以防止注入。在这种情况下,可以使用参数化查询,如下所示:

string QuerySql = "insert into BatchPermissons(BatchId,SubjectId,AuditoName,AudioID,CreatedBy,CreatedDate)" +
"values(@batchno,@subjectid,@AudiotoName,@AudioId ,@CBY,@dtime)";
SqlCommand cmd = new SqlCommand(s);
cmd.CommandType = CommandType.Text;
cmd.CommandText = QuerySql;
cmd.Parameters.Add("@batchno", SqlDbType.VarChar).Value = batchno;
cmd.Parameters.Add("@subjectid", SqlDbType.VarChar).Value = subjectid;
cmd.Parameters.Add("@AudiotoName", SqlDbType.VarChar).Value = AudiotoName;
cmd.Parameters.Add("@AudioId", SqlDbType.VarChar).Value = AudioId;
cmd.Parameters.Add("@CBY", SqlDbType.VarChar).Value = CBY;
cmd.Parameters.Add("@dtime", SqlDbType.DateTime).Value = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
"values(@batchno,@subjectid,@AudiotoName,@AudioId ,@CBY,getdate())"
如果使用的是
getdate()
方法,则可以避免最后一个参数添加值,如下所示:

string QuerySql = "insert into BatchPermissons(BatchId,SubjectId,AuditoName,AudioID,CreatedBy,CreatedDate)" +
"values(@batchno,@subjectid,@AudiotoName,@AudioId ,@CBY,@dtime)";
SqlCommand cmd = new SqlCommand(s);
cmd.CommandType = CommandType.Text;
cmd.CommandText = QuerySql;
cmd.Parameters.Add("@batchno", SqlDbType.VarChar).Value = batchno;
cmd.Parameters.Add("@subjectid", SqlDbType.VarChar).Value = subjectid;
cmd.Parameters.Add("@AudiotoName", SqlDbType.VarChar).Value = AudiotoName;
cmd.Parameters.Add("@AudioId", SqlDbType.VarChar).Value = AudioId;
cmd.Parameters.Add("@CBY", SqlDbType.VarChar).Value = CBY;
cmd.Parameters.Add("@dtime", SqlDbType.DateTime).Value = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
"values(@batchno,@subjectid,@AudiotoName,@AudioId ,@CBY,getdate())"

我想向你们介绍我的小朋友“标点符号”。我通过了相同的方法,但在查询中,但在13附近我得到了错误的语法错误。它将显示附近的错误time@user123datetime值周围缺少
字符。