日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C# 连接数据库等

發布時間:2025/4/16 C# 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C# 连接数据库等 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


SqlConnection
連接池:可以通過連接字符串配置連接池。
對象池技術:HttpApplication :Asp.Net
生產者 消費者。 線程。
應用程序跟數據連接非常耗時,而且連接使用非常頻繁,使用連接池可以提高連接對象重用效率
SqlCommand
ExcuteNonQuery() 執行非查詢類的sql腳本,返回影響的行數
ExcuteScalar() 執行sql,返回第一行第一列的值
ExcuteReader() 返回SqlDataReader
Reader默認指向 數據行
Read()方法執行一次,指針向下走一次。

?


省市選擇。
導出數據

using System; using System.Collections.Generic; using System.ComponentModel; using System.Configuration; using System.Data; using System.Data.SqlClient; using System.Drawing; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms;namespace _02ProvinceCitySelect {public partial class MainFrm : Form{public MainFrm(){InitializeComponent();}private void MainFrm_Load(object sender, EventArgs e){//加載數據庫中的所有的省的數據string connStr = ConfigurationManager.ConnectionStrings["sqlConn"].ConnectionString;//創建鏈接對象using (SqlConnection conn =new SqlConnection(connStr)){using (SqlCommand cmd =conn.CreateCommand()){conn.Open();//***********8cmd.CommandText =@"select AreaId, AreaName, AreaPid from [dbo].[AreaFull] where AreaPId=0";using (SqlDataReader reader = cmd.ExecuteReader()){while ( reader.Read()){//int AreadId = int.Parse(reader["AreaId"].ToString());//把表格的數據轉換成 對象數據AreaInfo areaInfo = new AreaInfo();areaInfo.AreaId = int.Parse(reader["AreaId"].ToString());areaInfo.AreaName = reader["AreaName"].ToString();areaInfo.AreaPId = int.Parse(reader["AreaPId"].ToString());//把省的信息放到 ComboBox中。ComboBox顯示信息是 Item對象的ToString()this.cbxProvince.Items.Add(areaInfo);}}//end useing reader}//end useing cmd}//end using connthis.cbxProvince.SelectedIndex = 0;}private void cbxProvince_SelectedIndexChanged(object sender, EventArgs e){AreaInfo provinceAreaInfo= this.cbxProvince.SelectedItem as AreaInfo;//判斷是否 拿到的城市為空if (provinceAreaInfo == null){return;}//根據省的Id獲取所有的城市信息//加載數據庫中的所有的省的數據string connStr = ConfigurationManager.ConnectionStrings["sqlConn"].ConnectionString;//創建鏈接對象using (SqlConnection conn = new SqlConnection(connStr)){using (SqlCommand cmd = conn.CreateCommand()){conn.Open();//***********8cmd.CommandText = @"select AreaId, AreaName, AreaPid from [dbo].[AreaFull] where AreaPId="+provinceAreaInfo.AreaId;using (SqlDataReader reader = cmd.ExecuteReader()){this.cbxCity.Items.Clear();while (reader.Read()){//int AreadId = int.Parse(reader["AreaId"].ToString());//把表格的數據轉換成 對象數據AreaInfo areaInfo = new AreaInfo();areaInfo.AreaId = int.Parse(reader["AreaId"].ToString());areaInfo.AreaName = reader["AreaName"].ToString();areaInfo.AreaPId = int.Parse(reader["AreaPId"].ToString());//把省的信息放到 ComboBox中。ComboBox顯示信息是 Item對象的ToString()this.cbxCity.Items.Add(areaInfo);}}//end useing reader}//end useing cmd}//enthis.cbxCity.SelectedIndex = 0;}private void btbExport_Click(object sender, EventArgs e){#region 選擇保存文件string fileName = string.Empty;// 保存的文件名//讓用戶選擇 要保存的文件路徑using (SaveFileDialog sfd = new SaveFileDialog()){if (sfd.ShowDialog() != DialogResult.OK){return;}fileName = sfd.FileName;} #endregion// 查詢數據數據,寫入數據string connStr = ConfigurationManager.ConnectionStrings["sqlConn"].ConnectionString;using (SqlConnection conn =new SqlConnection(connStr)){using (SqlCommand cmd =conn.CreateCommand()){conn.Open();cmd.CommandText = "select AreaId, AreaName, AreaPid from [dbo].[AreaFull]";using (SqlDataReader reader =cmd.ExecuteReader()){string tempLine = string.Empty;using (StreamWriter writer =new StreamWriter(fileName)){while (reader.Read()){tempLine = reader["AreaId"] + "," +reader["AreaName"] + "," +reader["AreaPId"];writer.WriteLine(tempLine);//寫入文本文件 }}}}}}} } View Code

?


2、案例:
輸錯三次禁止登陸,15分鐘后才能繼續。
->用數據庫記錄ErrorTimes,最后出錯時間lastErrorDateTime
->思路:
->什么情況允許登陸?
-> 輸入錯誤次數<3 || 最后錯誤時間>15分鐘

->第一步:先用戶的Id,用戶名,用戶密碼,用戶錯誤次數,用戶最后的錯誤時間 where UserName=txtUserName.Text and UserPwd=txtUserPwd.Text

->第二步:判斷是否查詢出數據
->如果沒有數據:如果沒有數據,用戶名和密碼不正確。
增加一次錯誤次數,修改一下錯誤時間。
->如果有數據,說明用戶名密碼正確。那么進行后續判斷,
->校驗時間是否符合規范,登陸次數是否滿足。
->滿足
->不滿足:提示。

using System; using System.Collections.Generic; using System.ComponentModel; using System.Configuration; using System.Data; using System.Data.SqlClient; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms;namespace _03LoginLockDemo {public partial class Form1 : Form{public Form1(){InitializeComponent();}private void btnLogin_Click(object sender, EventArgs e){//第一步:先用戶的Id,用戶名,用戶密碼,用戶錯誤次數,用戶最后的錯誤時間 where UserName=txtUserName.Text and UserPwd=txtUserPwd.Textstring connStr = ConfigurationManager.ConnectionStrings["sqlConn"].ConnectionString;using (SqlConnection conn=new SqlConnection(connStr)){using (SqlCommand cmd =conn.CreateCommand()){conn.Open();cmd.CommandText = @"SELECT [UserId],[UserName],[UserPwd],[LastErrorDateTime],[ErrorTimes]FROM [UserInfo] WHERE UserName='"+txtName.Text+"' and UserPwd='"+txtPwd.Text+"' ";UserInfo userInfo = null;//查詢來的數據封裝的對象。using (SqlDataReader reader = cmd.ExecuteReader()){//把查詢出來的數據賦值到userInfoif (reader.Read()){userInfo =new UserInfo();userInfo.UserId = int.Parse(reader["UserId"].ToString());userInfo.UserPwd = reader["UserPwd"].ToString();userInfo.LastErrorDateTime = DateTime.Parse(reader["LastErrorDateTime"].ToString());userInfo.ErrorTimes = int.Parse(reader["ErrorTimes"].ToString());}}//花括號執行結束之前,鏈接一直沒有關閉,這時候Reader一直占用Connection對象。//如果查詢結果為空,說明用戶名密碼錯誤,修改錯誤次數和 錯誤時間。if (userInfo==null){//修改 錯誤時間,錯誤次數 where UserName=txtUserName.Textcmd.CommandText ="update UserInfo set LastErrorDateTime=getdate(), ErrorTimes=ErrorTimes+1 where UserName='" +txtName.Text.Trim() + "'";cmd.ExecuteNonQuery();MessageBox.Show("用戶名密碼Error");return;}//如果有數據。后面校驗時間 錯誤次數。if (userInfo.ErrorTimes<3 || DateTime.Now.Subtract(userInfo.LastErrorDateTime).Minutes>15 ){MessageBox.Show("登陸成功!");// cmd.CommandText ="update UserInfo set LastErrorDateTime=getdate(), ErrorTimes=0 where UserId=" +userInfo.UserId;cmd.ExecuteNonQuery();}else{MessageBox.Show("登陸失敗!賬號被鎖定!");}}}}} } View Code

?

?

?

3、查詢語句參數化
->Sql注入問題演示。
->參數化解決Sql注入的難題

4、DataSet和DataTable

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms;namespace _04DataSetDemos {public partial class MainFrm : Form{public MainFrm(){InitializeComponent();}private void MainFrm_Load(object sender, EventArgs e){//創建一個內存的數據集DataSet ds =new DataSet("DS5");//創建一張內存表DataTable dt1 =new DataTable("dt1");//把表放到數據集里面去。 ds.Tables.Add(dt1);//給表定義列DataColumn dcName = new DataColumn("Name",typeof(string));DataColumn dcAge = new DataColumn("Age",typeof(int));DataColumn dcId=new DataColumn("Id",typeof(int));//把列放到表里面去。dt1.Columns.AddRange(new DataColumn[]{dcId,dcName,dcAge});//給表添加數據dt1.Rows.Add(1, "老馬", 18);dt1.Rows.Add(1, "趙黑", 29);dt1.Rows.Add(1, "老王", 18);dt1.Rows.Add(1, "老汪", 19);//-------//創建一張內存表DataTable dt2 = new DataTable("dt2");//把表放到數據集里面去。 ds.Tables.Add(dt2);//給表定義列DataColumn dcName2 = new DataColumn("Name", typeof(string));DataColumn dcAge2 = new DataColumn("Age", typeof(int));DataColumn dcId2 = new DataColumn("Id", typeof(int));//把列放到表里面去。dt2.Columns.AddRange(new DataColumn[] { dcId2, dcName2, dcAge2 });//給表添加數據dt2.Rows.Add(1, "老馬", 18);dt2.Rows.Add(1, "趙黑", 29);dt2.Rows.Add(1, "老王", 18);dt2.Rows.Add(1, "老汪", 19);foreach(DataTable tb in ds.Tables){foreach (DataRow dataRow in tb.Rows){Console.WriteLine(dataRow[0]+" " +dataRow[1]+" "+dataRow[2]);}}}} } View Code

?

轉載于:https://www.cnblogs.com/cb1186512739/p/9482032.html

總結

以上是生活随笔為你收集整理的C# 连接数据库等的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。