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
效果