網(wǎng)站首頁 編程語言 正文
一、提前準(zhǔn)備好數(shù)據(jù)庫
1. 連接數(shù)據(jù)庫服務(wù)器
這里我使用的是SQL Server 身份驗證(也可使用windows 身份驗證)
賬戶信息如下:
登錄名:sa
密碼:mima(輸入時自動隱藏)
2. 建立數(shù)據(jù)庫和表
這里我的數(shù)據(jù)庫信息如下:
服務(wù)器名:HG66\MSSQLSERVER01
數(shù)據(jù)庫名:DataBase01
表名:Table_1
三個屬性分別為:ID、姓名、年齡
二、創(chuàng)建項目并引入命名空間
1. 創(chuàng)建一個項目(這里以控制臺應(yīng)用為例)
建議創(chuàng)建以 .NET Framework 為框架的項目,否則可能會出現(xiàn)“找不到類型名“SqlConnection“”這樣的錯誤,原因為沒有使用 .NET Framework 框架的項目默認(rèn)沒有引入和SQL相關(guān)的命名空間
解決方法:【C#】找不到類型名“SqlConnection“的解決方法
2. 引入相關(guān)命名空間
using System.Data; // 表的命名空間
using System.Data.SqlClient; // 和SQL相關(guān)的命名空間
三、使用ADO.NET訪問數(shù)據(jù)庫
1. 配置連接信息
在第一部分,已經(jīng)知道了我數(shù)據(jù)庫的信息:
服務(wù)器名:HG66\MSSQLSERVER01
登錄名:sa
密碼:mima
數(shù)據(jù)庫名:DataBase01
方法一
先聲明一個SqlConnectionStringBuilder對象,再設(shè)置這個對象的屬性
// 聲明一個SqlConnectionStringBuilder對象
SqlConnectionStringBuilder scsb = new SqlConnectionStringBuilder();
scsb.DataSource = "HG66\\MSSQLSERVER01"; // 設(shè)置數(shù)據(jù)源服務(wù)器,注意這里的單斜線變雙斜線了
scsb.UserID = "sa"; // 設(shè)置用戶名
scsb.Password = "mima"; // 設(shè)置密碼
scsb.InitialCatalog = "DataBase01"; // 設(shè)置要訪問的數(shù)據(jù)庫
方法二
先聲明一個字符串,再設(shè)置字符串的值,字符串的值符合下面這個式子
"Data Source = (1); Database = (2); User Id = (3); Password = (4)"
(1)是數(shù)據(jù)源服務(wù)器
(2)是要訪問的數(shù)據(jù)庫 (Database改為Initial Catalog也可以)
(3)是用戶名
(4)是密碼
string ConStr = "Data Source = HG66\\MSSQLSERVER01; Database = DataBase01;"
+"User Id = sa; Password = mima";
上面這種輸入用戶名和密碼的是使用了 SQL Server 身份驗證,如果要使用 windows 身份驗證,只需要將 “User Id = sa; Password = mima” 改為 “Trusted_Connection = SSPI” 或 “Integrated Security = SSPI”
string ConnStr = "server = HG66\\MSSQLSERVER01; Database = DataBase01;"
+"Trusted_Connection = SSPI";
2. 創(chuàng)建連接并打開數(shù)據(jù)庫
使用方法一的 scsb 或方法二的 ConStr 來創(chuàng)建連接,創(chuàng)建連接后,需要通過這個連接打開數(shù)據(jù)庫,這樣才能操作數(shù)據(jù)庫
方法一的 scsb 由于不是string類型,所以需要使用ToString()方法
// 創(chuàng)建連接
SqlConnection SqlCon = new SqlConnection(scsb.ToString());
// 打開數(shù)據(jù)庫
SqlCon.Open();
方法二的 ConStr 可以直接作為參數(shù)傳進(jìn)去
// 創(chuàng)建連接
SqlConnection SqlCon = new SqlConnection(ConStr);
// 打開數(shù)據(jù)庫
SqlCon.Open();
3. 執(zhí)行SQL查詢語句
我現(xiàn)有數(shù)據(jù)庫的數(shù)據(jù)如下
假設(shè)我們要查找年齡為60的人的所有信息,在數(shù)據(jù)庫應(yīng)用中的操作如下
但是使用C#的話,①我們需要先使用一個字符串來存儲SQL查詢語句,②再通過這個字符串和已經(jīng)打開的數(shù)據(jù)庫來創(chuàng)建用于執(zhí)行SQL語句的對象,此時的對象并未執(zhí)行SQL查詢語句,而是已經(jīng)封裝好,③于是我們執(zhí)行對象的SQL查詢語句并接受結(jié)果,④最后讀取結(jié)果里的數(shù)據(jù)并輸出
// 1、創(chuàng)建要執(zhí)行的SQL查詢語句
string str = "select * from table_1 where 年齡 = 60";
// 2、創(chuàng)建用于執(zhí)行SQL查詢語句的對象
SqlCommand SqlCom = new SqlCommand(str, SqlCon);// 參數(shù)1:SQL語句字符串。參數(shù)2:已經(jīng)打開的數(shù)據(jù)庫
// 3、執(zhí)行對象的SQL查詢語句并接受結(jié)果
SqlDataReader Sdr = SqlCom.ExecuteReader();
// 4、讀取結(jié)果的數(shù)據(jù)
while (Sdr.Read())
{
Console.WriteLine("編號:" + Sdr["ID"].ToString());
Console.WriteLine("姓名:" + Sdr["姓名"].ToString());
Console.WriteLine("年齡:" + Sdr["年齡"].ToString());
}
如果所有的操作已完成,不要忘了關(guān)閉數(shù)據(jù)庫
// 關(guān)閉數(shù)據(jù)庫
SqlCon.Close();
運行程序,結(jié)果如下,查詢的結(jié)果與數(shù)據(jù)庫應(yīng)用中查詢的結(jié)果相同
本程序的源碼如下
using System;
using System.Data; // 表的命名空間
using System.Data.SqlClient; // 和SQL相關(guān)的命名空間
namespace ConsoleApp1
{
internal class Program
{
static void Main(string[] args)
{
// 方法一
SqlConnectionStringBuilder scsb = new SqlConnectionStringBuilder();
scsb.DataSource = "HG66\\MSSQLSERVER01"; // 設(shè)置數(shù)據(jù)源服務(wù)器
scsb.UserID = "sa"; // 設(shè)置用戶名
scsb.Password = "mima"; // 密碼
scsb.InitialCatalog = "DataBase01"; // 設(shè)置要訪問的數(shù)據(jù)庫
// 方法二
string ConStr = "Data Source = HG66\\MSSQLSERVER01; Database = DataBase01;"
+ "User Id = sa; Password = mima";
// 創(chuàng)建連接
SqlConnection SqlCon = new SqlConnection(ConStr);
// 打開數(shù)據(jù)庫
SqlCon.Open();
// 1、創(chuàng)建要執(zhí)行的SQL語句
string str = "select * from table_1 where 年齡 = 60";
// 2、創(chuàng)建用于執(zhí)行SQL語句的對象
SqlCommand SqlCom = new SqlCommand(str, SqlCon);
// 3、執(zhí)行SQL語句并接受結(jié)果
SqlDataReader Sdr = SqlCom.ExecuteReader();
// 4、讀取結(jié)果的數(shù)據(jù)
while (Sdr.Read())
{
Console.WriteLine("編號:" + Sdr["ID"].ToString());
Console.WriteLine("姓名:" + Sdr["姓名"].ToString());
Console.WriteLine("年齡:" + Sdr["年齡"].ToString());
}
// 關(guān)閉數(shù)據(jù)庫
SqlCon.Close();
Console.ReadKey();
}
}
}
總結(jié)
原文鏈接:https://blog.csdn.net/weixin_51585785/article/details/124671493
相關(guān)推薦
- 2022-08-12 Qt實現(xiàn)拖動單個控件移動的示例代碼_C 語言
- 2022-04-15 使用PyInstaller?打包配置文件_python
- 2023-02-10 利用Python獲取文件夾下所有文件實例代碼_python
- 2022-08-21 Android貝塞爾曲線實現(xiàn)加入購物車拋物線動畫_Android
- 2021-11-03 linux下shell常用腳本命令及有關(guān)知識_Linux
- 2023-04-01 python加速器numba使用詳解_python
- 2022-04-15 c語言?指針零基礎(chǔ)講解_C 語言
- 2023-03-01 Golang?Makefile示例深入講解使用_Golang
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支