ADO.NET制做一個(gè)登錄案例
總體思路.根據(jù)用戶(hù)輸入的用戶(hù)名和密碼,來(lái)判斷,和數(shù)據(jù)庫(kù)里面存的是不是一樣,如果一樣就表明登錄成功,否則就登錄失敗。
方案一:
1.select* from 表名 where username="用戶(hù)輸入的用戶(hù)名"
2.如果存在 reader.Read(),即用戶(hù)名存在,接著就判斷用戶(hù)輸入的密碼,和取到的密碼(reader.GetString(reader.GetOridinal("密碼字段")))是不是一樣,如果一樣就登錄成功,否則就登錄失敗。
方案二:
select * from 表名 where username="用戶(hù)輸入的用戶(hù)名" and password="用戶(hù)輸入的密碼",如果查得到數(shù)據(jù),就登錄成功。否則登錄失敗。
下面,我們來(lái)使用方案一,來(lái)做一個(gè)登錄的案例吧。
這里,為了方便,還是用控制臺(tái)應(yīng)用程序吧。
前奏:
我這次要把連接字符串寫(xiě)在配置文件中,
1.首先我們要添加命名空間的引用:System.Configuration;
2.然后在我們的配置文件AppConfig中,的<Configuration>節(jié)點(diǎn)下面添加連接字符串的相關(guān)節(jié)點(diǎn)信息。
<configuration>
<connectionStrings>
<add name="ConStr" connectionString="server=.;database=DB_USERS;uid=sa;pwd=Pasword_1"/>
</connectionStrings>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
</configuration>
標(biāo)紅顏色的地方,就是我們添加的連接字符串節(jié)點(diǎn)信息;
3.然后我習(xí)慣,創(chuàng)建一個(gè)DBHelper類(lèi),在里面聲明一個(gè)方法來(lái)獲取,連接字符串:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Configuration;//在項(xiàng)目中添加這個(gè)的引用,并在這個(gè)類(lèi)里面添加這個(gè)命名空間 namespace ADO.NET登錄案例1 { public class DBHelper { public static string GetConnectionStrings() { //使用ConfigurationManager類(lèi),來(lái)獲取連接字符串的信息。 return ConfigurationManager.ConnectionStrings["ConStr"].ConnectionString; } } }
4.這次我依然使用存儲(chǔ)過(guò)程,創(chuàng)建一個(gè)根據(jù)用戶(hù)名查詢(xún)的存儲(chǔ)過(guò)程:
IF OBJECT_ID('Ins_User','P') IS NOT NULL DROP PROCEDURE Ins_User GO CREATE PROCEDURE Ins_User @name NVARCHAR(20) AS SELECT * FROM dbo.T_USERS WHERE T_NAME=@name GO
存儲(chǔ)過(guò)程
前期的準(zhǔn)備工作,做好之后,現(xiàn)在我們來(lái)開(kāi)始寫(xiě)程序,編碼實(shí)現(xiàn):
思路:方案一,說(shuō)了,首先我們當(dāng)然是讓用戶(hù)輸入,用戶(hù)名和密碼,然后根據(jù)用戶(hù)輸入的用戶(hù)名來(lái)查詢(xún)數(shù)據(jù)庫(kù)對(duì)應(yīng)的表中,有沒(méi)有相關(guān)數(shù)據(jù),如果沒(méi)有的話(huà),就提示用戶(hù)名不存在,有的話(huà),就繼續(xù)判斷用戶(hù)輸入的密碼是否正確(拿用戶(hù)輸入的密碼和數(shù)據(jù)庫(kù)對(duì)應(yīng)的密碼,進(jìn)行判斷),如果正確,就提示登錄成功,否則就提示密碼錯(cuò)誤。
*這里我使用參數(shù)化查詢(xún),來(lái)寫(xiě)登錄的案例,目的是為了防止SQL注入攻擊。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Data; using System.Data.SqlClient; namespace ADO.NET登錄案例1 { class Program { static void Main(string[] args) { //提示用戶(hù)輸入用戶(hù)名 Console.WriteLine("請(qǐng)輸入用戶(hù)名:"); //使用Console.ReadLine()接收用戶(hù)輸入的信息 string userName = Console.ReadLine(); //提示用戶(hù)輸入密碼 Console.WriteLine("請(qǐng)輸入密碼:"); string password = Console.ReadLine(); //現(xiàn)在就是開(kāi)始使用ADO.NET技術(shù),來(lái)查詢(xún)數(shù)據(jù)庫(kù)了 //連接方式訪問(wèn) //1.創(chuàng)建連接對(duì)象(連接字符串) SqlConnection scon = new SqlConnection(DBHelper.GetConnectionStrings()); //2.創(chuàng)建命令對(duì)象(并為命令對(duì)象設(shè)置屬性值) SqlCommand scmd = new SqlCommand(); scmd.CommandText = "Ins_User"; scmd.CommandType = CommandType.StoredProcedure; scmd.Connection = scon; //3打開(kāi)連接 scon.Open(); //設(shè)置參數(shù) scmd.Parameters.Add(new SqlParameter("@name",userName.Trim())); //4.執(zhí)行命令 SqlDataReader reader = scmd.ExecuteReader(CommandBehavior.CloseConnection); //5處理數(shù)據(jù) if (reader.Read()) { if (password.Trim().ToString() == reader["T_PWD"].ToString()) { Console.WriteLine("登錄成功"); } else { Console.WriteLine("密碼錯(cuò)誤"); } } else { Console.WriteLine("用戶(hù)名不存在"); } //讀取器用完一定要關(guān)閉 reader.Dispose(); Console.ReadKey(); } } }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 一款經(jīng)典的ajax登錄頁(yè)面 后臺(tái)asp.net
- asp.net jQuery Ajax用戶(hù)登錄功能的實(shí)現(xiàn)
- asp.net BasePage類(lèi)+Session通用用戶(hù)登錄權(quán)限控制
- 基于.Net的單點(diǎn)登錄(SSO)實(shí)現(xiàn)解決方案
- 一個(gè)簡(jiǎn)單的asp.net 單點(diǎn)登錄實(shí)現(xiàn)
- ASP.NET 應(yīng)用程序級(jí) 驗(yàn)證用戶(hù)是否登錄 一般處理程序
- asp.net DiscuzNT登錄,退出的代碼
- ASP.NET登錄注冊(cè)頁(yè)面實(shí)現(xiàn)
- asp.net利用cookie保存用戶(hù)密碼實(shí)現(xiàn)自動(dòng)登錄的方法
- ASP.NET jQuery 實(shí)例11 通過(guò)使用jQuery validation插件簡(jiǎn)單實(shí)現(xiàn)用戶(hù)登錄頁(yè)面驗(yàn)證功能
相關(guān)文章
vs.Net2003無(wú)法打開(kāi)或創(chuàng)建Web應(yīng)用程序若干解決辦法.
這篇文章主要介紹了vs.Net2003無(wú)法打開(kāi)或創(chuàng)建Web應(yīng)用程序若干解決辦法.2006-10-10利用.net core實(shí)現(xiàn)反向代理中間件的方法
這篇文章主要給大家介紹了關(guān)于利用.net core實(shí)現(xiàn)反向代理中間件的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用.net core具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09ASP.NET Core MVC 中實(shí)現(xiàn)中英文切換的示例代碼
這篇文章主要介紹了ASP.NET Core MVC 中實(shí)現(xiàn)中英文切換的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02ASP.NET編程時(shí)遇到GridView的一個(gè)問(wèn)題 激發(fā)了未處理的事件"PageIndexChanging&q
今天在寫(xiě)代碼的時(shí)候遇到一個(gè)很郁悶的問(wèn)題,就是在ASP.NET中通過(guò)編程創(chuàng)建SqlDataSource然后綁定給GridView,在啟用了 GridView自身的分頁(yè)功能之后,點(diǎn)擊分頁(yè)頁(yè)碼會(huì)出現(xiàn)錯(cuò)誤提示:GridView“GridView1”激發(fā)了未處理的事件"PageIndexChanging"……2010-04-04ADO.NET實(shí)現(xiàn)對(duì)SQL Server數(shù)據(jù)庫(kù)的增刪改查示例
本篇文章主要介紹了ADO.NET實(shí)現(xiàn)對(duì)SQL Server數(shù)據(jù)庫(kù)的增刪改查示例,非常具有實(shí)用價(jià)值,需要的朋友可以參考下。2017-01-01