在 SQL 数据库中搜索特定日期时间 (WebMatrix)
Searching for a specific DateTime in a SQL Database(WebMatrix)
我正在尝试在 SQL 数据库中搜索一组特定的 DateTime 项目。我的意图是能够搜索特定日期,然后将该数据的日志数据显示在 WebGrid 的屏幕上。
我很感激能得到任何提示和帮助,因为我对编程还很陌生
我的初始错误:
System.Data.SqlServerCe.SqlCeException: The data type is not valid for the boolean operation. [ Data type (if known) = datetime,Data type (if known) = nvarchar
完整的代码集如下:
@{
var db = Database.Open("Cafeen");
var grid = new WebGrid();
if (IsPost) {
var SearchTerm = Request["Data"];
var selectcommand = "SELECT * FROM logistics WHERE Date > SearchTerm";
var dw = Convert.ToDateTime(SearchTerm);
var SelectedData = db.Query(selectcommand, dw);
grid = new WebGrid(source: SelectedData, defaultSort: "Stock", rowsPerPage:50);
}
}
</form>
<h1>Search for Log files</h1>
<form method="post">
<div id="grid">
Date: <input type="text" id="datepicker" size="30" value="@Request["Data"]" />
<input type="submit" />
<hr/>
@if (IsPost) {
@grid.GetHtml(
tableStyle: "grid",
headerStyle: "head",
alternatingRowStyle: "alt",
columns: grid.Columns(
grid.Column("ProductName"),
grid.Column("Category"),
grid.Column("Price"),
grid.Column("PurchasePrice"),
grid.Column("Stock"),
grid.Column("Date")
)
)
}
</div>
</form>
<title>jQuery UI Datepicker - Format date</title>
<link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
<link rel="stylesheet" href="/resources/demos/style.css">
<script>
$(function() {
$( "#datepicker" ).datepicker();
$( "#format" ).change(function() {
$( "#datepicker" ).datepicker( "option", "dateFormat", $( this ).val() );
});
});
</script>
你走在正确的轨道上。但是将参数传递到 SQL 字符串的方式是通过称为参数化的方式。 SQL 字符串中的第一个参数将是@0,第二个是@1,依此类推。这些将对应于 db.Query() 中传递的第一个参数。所以你可以把它想象成 db.Query(string, @0, @1,....)。因此,对于您的具体情况,我会稍微更改 sql 以仅查看日期,然后使用参数:
var selectcommand = "SELECT * FROM logistics WHERE Date > @0";
然后您的查询行将如下所示:
var SelectedData = db.Query(selectcommand, dw);
并且您的 dw 变量被放入字符串的 @0 部分。顺便说一句,参数化可以保护您免受称为 SQL 注入攻击的严重安全漏洞。
我正在尝试在 SQL 数据库中搜索一组特定的 DateTime 项目。我的意图是能够搜索特定日期,然后将该数据的日志数据显示在 WebGrid 的屏幕上。
我很感激能得到任何提示和帮助,因为我对编程还很陌生
我的初始错误:
System.Data.SqlServerCe.SqlCeException: The data type is not valid for the boolean operation. [ Data type (if known) = datetime,Data type (if known) = nvarchar
完整的代码集如下:
@{
var db = Database.Open("Cafeen");
var grid = new WebGrid();
if (IsPost) {
var SearchTerm = Request["Data"];
var selectcommand = "SELECT * FROM logistics WHERE Date > SearchTerm";
var dw = Convert.ToDateTime(SearchTerm);
var SelectedData = db.Query(selectcommand, dw);
grid = new WebGrid(source: SelectedData, defaultSort: "Stock", rowsPerPage:50);
}
}
</form>
<h1>Search for Log files</h1>
<form method="post">
<div id="grid">
Date: <input type="text" id="datepicker" size="30" value="@Request["Data"]" />
<input type="submit" />
<hr/>
@if (IsPost) {
@grid.GetHtml(
tableStyle: "grid",
headerStyle: "head",
alternatingRowStyle: "alt",
columns: grid.Columns(
grid.Column("ProductName"),
grid.Column("Category"),
grid.Column("Price"),
grid.Column("PurchasePrice"),
grid.Column("Stock"),
grid.Column("Date")
)
)
}
</div>
</form>
<title>jQuery UI Datepicker - Format date</title>
<link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
<link rel="stylesheet" href="/resources/demos/style.css">
<script>
$(function() {
$( "#datepicker" ).datepicker();
$( "#format" ).change(function() {
$( "#datepicker" ).datepicker( "option", "dateFormat", $( this ).val() );
});
});
</script>
你走在正确的轨道上。但是将参数传递到 SQL 字符串的方式是通过称为参数化的方式。 SQL 字符串中的第一个参数将是@0,第二个是@1,依此类推。这些将对应于 db.Query() 中传递的第一个参数。所以你可以把它想象成 db.Query(string, @0, @1,....)。因此,对于您的具体情况,我会稍微更改 sql 以仅查看日期,然后使用参数:
var selectcommand = "SELECT * FROM logistics WHERE Date > @0";
然后您的查询行将如下所示:
var SelectedData = db.Query(selectcommand, dw);
并且您的 dw 变量被放入字符串的 @0 部分。顺便说一句,参数化可以保护您免受称为 SQL 注入攻击的严重安全漏洞。