我在網頁上有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
沒有留言:
張貼留言