当我将数据插入数据库时我也需要插入日期但我在此查询中传递了一个插入查询我插入了数据但是它默认使用日期列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();
但是上面的查询在database.i中插入默认日期需要插入,当我插入特定日期将存储的数据时,任何人都可以帮助我。
答案 0 :(得分:2)
如果日期输入始终是当前日期,那么您可以使用sql方法getdate()
来填充该值。如果不是,则必须以适当的格式提供日期,这意味着在"yyyy-MM-dd HH:mm:ss"
中使用.ToString()
更改格式很简单,因此查询将为:
string s = "insert into BatchPermissons(...,CreatedDate) values(...," + getdate() + ")"; // using standard method date
或者
string s = "insert into BatchPermissons(...,CreatedDate) values(...," + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ")"; // using formated date
特别说明:
我们可以使用text only
查询停止开放sql injection并开始编写参数化查询吗?这样我们就可以避免不必要的FormatingException并保护注入。在这种情况下,您可以使用如下参数化查询:
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");
如果您使用getdate()
方法,那么您可以避免最后一个参数添加值,它将如下所示:
"values(@batchno,@subjectid,@AudiotoName,@AudioId ,@CBY,getdate())"
答案 1 :(得分:1)
您可以将DateTime.Now.ToString()
替换为"getdate()"
。这将从SQL服务器获取日期。或者将格式添加到ToString
DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
答案 2 :(得分:0)
如果您的数据库列类型为datetime
,请尝试直接插入datetime
-
string s = "insert into BatchPermissons(BatchId,SubjectId,AuditoName,AudioID,CreatedBy,CreatedDate) values(" + batchno + ", " + subjectid + " , '" + AudiotoName + "', " + AudioId + ",'" + CBY + "'," + DateTime.Today + ")";