2014年3月17日 星期一

網頁上有3個textbox控制項,這3個控制項是輸入查詢的條件。如何寫?


我在網頁上有3個textbox控制項,這3個控制項是輸入查詢的條件。那麼我的sql語句應該如何寫呢?
有什麼更簡單的辦法嗎?這3個控制項不一定都有值的?我不想用if條件來判斷?各位有什麼好的方法嗎?謝謝了。

------解決方案--------------------
動態拼接sql,注意防SQL注入,給一段參考代碼:

CREATE PROCEDURE [dbo].[Log_OperLog_GetOperLogCount]
@OperEmployeeId varchar(20),
@OperModuleId int,
……
AS
DECLARE @sql nvarchar(4000);
SET @sql = 'SELECT count(*) FROM Log_Oper 
WHERE 1=1'
+ case when @OperEmployeeId is not null then ' and OperEmployeeId=@OperEmployeeId' else '' end
……
EXEC sp_executesql 
@sql,
N'@OperEmployeeId varchar(20), @OperModuleId int, @OperObjectId varchar(1000), @OperTypeName varchar(20), @OperTimeStart datetime, @OperTimeEnd datetime', --必須要加'N'
@OperEmployeeId,
@OperModuleId,
……
GO

------解決方案--------------------
1 在後台代碼中拼sql的條件,這個很簡單 根據文本框是否為空來拼

2 在資料庫中判斷

SQL code
   create Table Users ( id int, name nvarchar(20), age int )  create proc sp_SGetUserInfo ( @Name nvarchar(20), @Age int ) as select      * from     Users where     (@Name='' or name=@Name)  --參數為空 就不執行了 
and  (@Age='' or age=@Age)  
------解決方案--------------------
簡單的寫一下,你照著這個來就可以了,不過用了if
C# code
string str1=this.TextBox1.text.Trim().ToString(); 
string str2=this.TextBox2.text.Trim().ToString(); 
string str3=this.TextBox3.text.Trim().ToString(); 

//假設處理頁為search.aspx 
//你在按鈕上的處理頁寫成:"search.aspx?str1="+str1+"&str2="+str2+"&str3="+str3 

//下面是search.aspx頁的部分代碼  
string s1,s2,s3; 
string str1,str2,str3; 
str1=Request.QueryString["str1"].ToString(); 
str2=Request.QueryString["str2"].ToString(); 
str3=Request.QueryString["str3"].ToString(); 
if(str1=="" || str1==null) 
{  s1=""; } 
else 
{  s1=" and 欄位名 like '"+str1+"'"; }
 
if(str2=="" || str2==null) 
{  s2=""; } 
else 
{  s2=" and 欄位名 like '"+str2+"'"; } 

if(str3=="" || str3==null) 
{  s3=""; } 
else {  s3=" and 欄位名 like '"+str3+"'"; }

 //然後把它們組合起來 
string sql="select * from tablename where id<>0"; 
sql+=s1+s2+s3;       
Bookmark the permalink ,來源:互聯網
資料來源:
http://www.010cnc.net/subject/about/%E5%B0%8F%E5%BC%9F%E6%88%91%E5%9C%A8%E7%B6%B2%E9%A0%81%E4%B8%8A%E6%9C%893%E5%80%8Btextbox%E6%8E%A7%E5%88%B6%E9%A0%85%EF%BC%8C%E9%80%993%E5%80%8B%E6%8E%A7%E5%88%B6%E9%A0%85%E6%98%AF%E8%BC%B8%E5%85%A5%E6%9F%A5%E8%A9%A2%E7%9A%84%E6%A2%9D%E4%BB%B6%E3%80%82%E9%82%A3%E9%BA%BC%E5%B0%8F%E5%BC%9F%E6%88%91%E7%9A%84sql%E8%AA%9E%E5%8F%A5%E6%87%89%E8%A9%B2%E6%80%8E%E9%BA%BC%E5%AF%AB%E5%91%A2.html

沒有留言: