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

效果

posted @ 2023-03-19 20:57  ben犇  阅读(1292)  评论(0编辑  收藏  举报