【发布时间】:2015-01-15 16:32:52
【问题描述】:
目前我正在开发一个应用程序,该应用程序通过 SQL 表搜索选民登记信息,例如名字、姓氏、城市等。
到目前为止,我只能搜索一张表,但我希望能够让用户选择更改他们可以搜索的年份。
我怎样才能做到这一点?
这是我当前的代码:
namespace WebApplication1
{public class VoterDataLayer
{
public DataTable SelectSearch(string lastName, string firstName, string middleName, string nameSuffix, string city, string zip)
{
try
{
string connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["VoterReg"].ConnectionString;
using (SqlConnection Connection = new SqlConnection(connectionString))
{
SqlCommand cmd = new SqlCommand("spVR092011", Connection);
DataTable dt = new DataTable();
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@LastName", lastName);
cmd.Parameters.AddWithValue("@FirstName", firstName);
cmd.Parameters.AddWithValue("@MiddleName", middleName);
cmd.Parameters.AddWithValue("@NameSuffix", nameSuffix);
cmd.Parameters.AddWithValue("@City", city);
cmd.Parameters.AddWithValue("@Zip", zip);
Connection.Open();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt);
return dt;
}
}
catch (SqlException ex)
{
throw ex;
}
}
}
}
存储过程
USE [Voters]
去 /****** 对象:StoredProcedure [dbo].[spVR092011] 脚本日期:1/15/2015 8:56:28 AM ******/ 设置 ANSI_NULLS ON 去 设置 QUOTED_IDENTIFIER ON 去 更改程序 [dbo].[spVR092011]
@LastName varchar(25),
@FirstName varchar(25),
@MiddleName varchar(25),
@NameSuffix varchar(4),
@City varchar(250),
@Zip varchar(10)
作为 开始 -- 添加了 SET NOCOUNT ON 以防止额外的结果集 -- 干扰 SELECT 语句。 设置无计数;
-- Insert statements for procedure here
SELECT TOP 1000 [LastName] AS [Last Name],
[FirstName] AS [First Name],
[MiddleName] AS [Middle],
[NameSuffix] AS [Suffix],
[City],
[Zip] AS [Zip Code],
[RegistrantID]
FROM [dbo].[VR092011]
WHERE
[LastName] LIKE '%' + @LastName + '%' AND
[FirstName] LIKE '%' + @FirstName + '%' AND
[MiddleName] LIKE '%' + @MiddleName + '%' AND
[NameSuffix] LIKE '%' + @NameSuffix + '%' AND
[City] LIKE '%' + @City + '%' AND
[Zip] LIKE '%' + @Zip + '%'
结束
【问题讨论】:
-
你是说你在不同的表中有不同的“年”数据吗?另外,请注意
SqlCommand和SqlDataAdapter都实现了IDisposable,因此应该明确关闭或包含在using语句中 -
所涉及的表的描述将很有用...
-
您正在向现有的 cmd 对象添加参数.. 为什么不能在参数中添加年份并在数据库存储过程中将其默认为 null..?如果您不确定
stuartd是在说什么,根据您所解释的内容,这看起来并不那么困难seby408。如果您不确定如何将前面提到的对象包装在其中,您可以这样做using(){}((IDisposable)cmd).Dispose();你也可以对SqlAdapter Object做同样的事情 -
发布您的
spVR092011存储过程会很有帮助。正如@MethodMan 所说,这似乎是对您当前代码的一个微不足道的更改。 -
@stuartd 是的,这正是我要说的。
标签: c# asp.net sorting gridview