C# 使用Windows身份验证连接Sql Server
C# 使用Windows身份验证连接Sql Server
使用Windows身份验证连接Sql Server 的字符串为:
server=.;database=test_user;Trusted_Connection=SSPI;
对比使用 sql server身份验证的字符串为:
server=.;uid=xxx;pwd=xxxxx;database=test_user;
核心在于Trusted_Connection=SSPI,表示无需使用密码就能够访问Sql Server内容,但这种方式非常不安全,但在写一些demo时不妨采用。
数据库
use test_user; create table [TEST]( [ID] int not null check([ID]>0) primary key, [USERNAME] varchar(10) not null, [PWD] varchar(100) not null ); insert into [TEST] values(1,'张飞','werqewq'); insert into [TEST] values(2,'刘备','asdfasd'); insert into [TEST] values(3,'关羽','23231cds23d3'); insert into [TEST] values(4,'曹操','vvvvvv'); insert into [TEST] values(5,'孙权','bbbbb'); insert into [TEST] values(6,'汉献帝','333333'); insert into [TEST] values(7,'司马懿','22222'); insert into [TEST] values(8,'诸葛亮','1111111'); select * from [TEST];
Form1.cs
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Data.SqlClient;//一系列的数据库操作类用到 namespace testuser { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { //前加@的字符串代表字符串所有的需要转义的字符自动转义,而无需使用转义符\ SqlConnection sqlConnection = new SqlConnection(@"server=.;database=test_user;Trusted_Connection=SSPI"); sqlConnection.Open(); //生成表头 listView1.Columns.Add("ID", listView1.Width / 3 - 1, HorizontalAlignment.Left); listView1.Columns.Add("姓名", listView1.Width / 3 - 1, HorizontalAlignment.Left); listView1.Columns.Add("密码", listView1.Width / 3 - 1, HorizontalAlignment.Left); try { string sql = @" select * from [TEST];"; SqlDataReader sqlDataReader = new SqlCommand(sql, sqlConnection).ExecuteReader(); listView1.BeginUpdate(); //数据更新挂起UI,直到EndUpdate绘制控件 for(int i=1;sqlDataReader.Read(); i++) //遍历查询结果 { ListViewItem listViewItem = new ListViewItem(); //listView的每一行的第一项要特殊处理 listViewItem.Text = sqlDataReader.GetInt32(0).ToString(); listViewItem.SubItems.Add(sqlDataReader.GetString(1)); //其余子项 listViewItem.SubItems.Add(sqlDataReader.GetString(2)); listView1.Items.Add(listViewItem); //将这行添加到listView中 } listView1.EndUpdate(); //结束数据处理,UI界面一次性绘制 } catch { MessageBox.Show("数据库出错!", this.Text); } sqlConnection.Close(); } //根据ListView 的总大小平均分配各个列宽 private void Form1_Resize(object sender, EventArgs e) { for(int i= 0;i<listView1.Columns.Count;i++) { ColumnHeader columnHeader = listView1.Columns[i]; columnHeader.Width = listView1.Width / listView1.Columns.Count - 2; } } } }
Form1.cs[设计]
Form1 事件:Resize Form1_Resize
Load Form1_Load
ListView1 属性:Anchor Top,Buttom,Left,Right
FullRowSelect True
GridLines True
View Details
效果
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?