目前我的工作,通過選民登記信息,如名字,姓氏,城市等如何更改搜索應用程序的SQL數據源?
到目前爲止,我只能夠通過一個表格來搜索,但我想要一個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]
GO /******對象:StoredProcedure的[DBO] [spVR092011]腳本日期:2015年1月15日8點56分28秒******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON。GO ALTER PROCEDURE [DBO] [spVR092011]
@LastName varchar(25),
@FirstName varchar(25),
@MiddleName varchar(25),
@NameSuffix varchar(4),
@City varchar(250),
@Zip varchar(10)
AS BEGIN - SET NOCOUNT ON加入是爲了避免額外的結果集 - 用SELECT語句的干擾。 SET NOCOUNT ON;
-- 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 + '%'
END
你是說你在不同的表格中有不同的「年份」數據?另外請注意,'SqlCommand'和'SqlDataAdapter'都實現'IDisposable',因此應該明確地關閉或包含在'using'語句中 – stuartd 2015-01-15 16:36:45
所涉及的表的描述將會很有用... – 2015-01-15 16:39:04
您正在將參數添加到現有的cmd對象..爲什麼不能將參數添加多年,並在數據庫中將其默認爲null存儲過程..?如果你不確定「stuartd」在說什麼,你也可以根據你正在解釋的「seby408」來解決這個問題。如果你不確定如何包裝前面提到的對象,你可以做這樣的事情。一個'using(){}''((IDisposable)cmd).Dispose();'你也可以爲'SqlAdapter Object'做同樣的事情 – MethodMan 2015-01-15 16:42:36