adonetsql語句
Ⅰ ADO.NET資料庫查詢
關於sql注入的基本概念經典的注入語句是' or 1=1--
單引號而截斷字元串,「or 1=1」的永真式的出現使得表的一些信息被暴露出來,如果sql語句是select * from 的話,可能你整個表的信息都會被讀取到,更嚴重的是,如果惡意使用都使用drop命令,那麼可能你的整個資料庫得全線崩潰。
當然,現在重點不是講sql注入的害處,而是說說如何最大限度的避免注入問題。
sql注入的存在在最大危害,是sql的執行語句沒有和控制語句分開,我們想要select一些東西,但用戶可能拼出' or 1=1甚至再加上delete/update/drop,後來是屬於控制語句了,所以要避免sql的注入,就必須把查詢語句與控制語句分開。
SqlParameter給我們提供了一個很好的類,有了它,我們可以不現拼接字元串,也可以不再擔心單引號帶來的慘劇,因為,這一切會有人來為我們完成的。
簡單的給個示例
傳統的查詢語句的sql可能為
string sql="select * from users where user_id='"+Request.QueryString["uid"]+"'";
很顯然,我們在這里拼接了字元串,這就給sql注入留下了可乘之機。
現在,我們要改寫這樣的語句,使用SqlParameter來做
SqlCommand SqlCmd = new SqlCommand(sql, SqlConn);
SqlParameter _userid = new SqlParameter("uid", SqlDbType.Int);
_userid.Value = Request.QueryString["u_id"];
SqlCmd.Parameters.Add(_userid);
這樣,我們可以保證外接參數能被正確的轉換,單引號這些危險的字元也會轉義了,不會再對庫造成威脅。
當然,這僅是一個示例而已,在真實的情況下,可能你還要對 Request.QueryString["u_id"]進行必要的檢測與分析,這樣才安全
所以,使用參數化的sql語句,是一種很好的做法,不過,我們也還有更好的辦法,那就是使用參數化的存儲過程,如果你有興趣,可以繼續探討。
----轉載
Ⅱ 在ASP.NET中如何實現修改用戶密碼並保存到資料庫中
很簡單,在這里將會用到Ado.Net技術,主要用於與資料庫的鏈接:
Sql語句
,這里用的Sql語句有兩句:
第一句:Select
*
From
表名
where
Id
=
『要修改的用戶ID(編號)』,這句話的意思主要是將該用戶的信息從資料庫中查詢出來;
第二句:Update
from
表名
Set
資料庫密碼欄位
=
『修改後的密碼欄位』
where
Id
=
『要修改的用戶ID(編號)』。
其他的代碼,我相信你應該會吧!
Ⅲ 求ado.net大神,做簡單登錄界面
//添加兩個文本框,以輸入用戶名textBox1和密碼textBox2
//添加一個按鈕,以驗證登陸button1
//引用命名空間usingSystem.Data.SqlClient;
privatevoidbutton1_Click(objectsender,EventArgse)//按鈕單擊事件
{//定義連接字元串並初始化
stringconnStr="server=.;database=Test;uid=sa;pwd=888888";
//創建連接對象,使用連接字元串
SqlConnectioncn=newSqlConnection(connStr);
//創建命令對象,使用帶參SQL語句,並以文本框的值作為實參
//SQL語句:從myuser表中查詢,返回符合uid=用戶名並且pwd=密碼的數據
SqlCommandcmd=newSqlCommand("select*frommyuserwhereuid=@uidandpwd=@pwd",cn);
cmd.Parameters.AddWithValue("@uid",textBox1.Text.Trim());
cmd.Parameters.AddWithValue("@pwd",textBox2.Text.Trim());
//打開鏈接
cn.Open();
//如果有返回值,證明合法用戶,沒有返回值即非法用戶
if(cmd.ExecuteScalar()==null)//執行查詢並判斷
{
MessageBox.Show("登陸失敗");
}
else
{
MessageBox.Show("登陸成功");
}
//關閉連接
cn.Close();
}