[Note:我也正在寻找一种方法来避免发生AddWithParameter
SQL注入风险,但是我不确定如何使用DotNetNuke来做到这一点,因此这是此问题的第二个问题。
我将日期作为C#DateTime
存储到SQL数据库datetime
列中。检索该日期时,我无法获取hh:mm:ss信息,它始终显示12:00,但是正确检索并显示了日,月,年。
这是我在SQL中插入日期的方式:
string sqlDateFormat = "yyyy-MM-dd HH:mm:ss.fff";
string sqlInsertString = String.Format("INSERT INTO TABLE_NAME (Date_Column_Name) VALUES ({0})", thisDate?.ToString(sqlDateFormat)};
using (IDataContext ctx = DataContext.Instance())
{
try
{
ctx.Execute(System.Data.CommandType.Text,
sqlInsertString);
success = true;
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine(ex.Message);
}
}
这是我检索表数据的方式:
using (IDataContext ctx = DataContext.Instance())
{
string sqlString = @"SELECT Date_Column_Name FROM Table_Name WHERE ID = " + paramId;
try
{
myTableDates = ctx.ExecuteQuery<TableModel> (System.Data.CommandType.Text, sqlString);
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine(ex.Message);
}
}
这是我尝试在视图中显示的方式:
<tbody>
@foreach (TableModel tm in Model.AllTablesDates)
{
var dateVar = tm.Date == null ? "N/A" :
tm.Date.Value.ToString("dd-MMM-yyyy h:mm tt");
<tr>
<td data-title="Day">@dateVar</td>
</tr>
}
</tbody>
基于this post,将您的陈述更改为以下内容:
ctx.Execute("INSERT INTO TABLE_NAME (Date_Column_Name)VALUES (@0)", thisDate);