0

我正在尝试创建表单,用户可以在其中输入最多 3 个表单的文本。每个表单都对应于 SQL Server CE 数据库表中的列。根据表单中的文本输入,页面将显示包含所有指定文本的所有行(空值被视为通配符)。

对于 1 种形式,我可以正常工作。表单文本被分配为变量的值并在页面之间传递没有问题。我只是不确定如何在查询中包含其他 2 列。

这是带有表单的输入页面的代码:

@{ 
var formValue1 = Request.Form["FN"];
var formValue2 = Request.Form["LN"];
var formValue3 = Request.Form["CPNY"];  
if (IsPost) 
 { 
       Response.Redirect("DisplaySearch.cshtml?firstname=" + formValue1);
       Response.Redirect("DisplaySearch.cshtml?lastname=" + formValue2);       
 } 
 }

<form action="" method="post">
First Name:<input type="text" ID="FN" name="FN" value=""></input><br>
Last Name:<input type="text" ID="LN" name="LN"></input><br>
Company:<input type="text" ID="CPNY" name="CPNY"></input>
<br>
<input type="submit" value="Search"></input></form>

这是显示页面的代码:

@using WebMatrix.Data 

@{
var Keyword1 = Request.QueryString["firstname"];    //Retrieves passed variable from    the database search page for First Names
var Keyword2 = Request.QueryString["lastname"];    //Retrieves passed variable from the database search page for First Names
var Keyword3 = Request.QueryString["company"];    //Retrieves passed variable from the database search page for First Names
var db= Database.Open("Orientation"); 
var sqlQ = "SELECT * FROM Orientation WHERE FirstName LIKE @0";
var data = db.Query(sqlQ,  "%" + Keyword1 + "%");  
 }

<div class="content-box-main">

<ol>
@foreach(var row in data){
<li>
@row.LastName, @row.FirstName, @row.MiddleName, @row.Email, @row.Company, @row.Date
</li>
}
</ol><br>

</div>

非常感谢您的帮助!我是一个创建 Web 应用程序的菜鸟,直到 2 周前我唯一的编程经验是 Office 中奇怪的 VBA 宏。我还要再次提及,我使用的是 WebMatrix 和 SQL Server CE。我知道 SQL Server CE 存在一些限制,尽管我喜欢作为菜鸟的易用性。如果有人对使用不同的 SQL Server 程序有任何建议,我愿意听取他们的意见。

谢谢!

詹姆士

4

1 回答 1

0
   Response.Redirect("DisplaySearch.cshtml?firstname=" + formValue1 + "&lastname=" + formValue2 + "&company=" + formValue3);

var sqlQ = "SELECT * FROM Orientation WHERE FirstName LIKE @0 AND LastName LIKE @1 AND Company LIKE @2";
var data = db.Query(sqlQ,  "%" + Keyword1 + "%", "%" + Keyword2 + "%", "%" + Keyword3 + "%");
于 2012-07-22T21:25:39.577 回答