C#winform中数据库的连接

Stella981
• 阅读 1083

一、连接VS2013自带的本地数据库

using System.Data.SqlClient;

首先定义一个连接字符串

public static string ConnectString = "Server=(localdb)\\Projects;Initial Catalog=Test;Integrated Security=true";

其中:Server是服务器名

   Ilitial Catalog是数据库名 

   Integrated Security是集成验证,使用Windows验证的方式去连接到数据库服务器。不需要在连接字符串中编写用户名和密码,从一定程度上说提高了安全性。(该参数为false时或省略该项时,按照Userid和password来连接,设为SSPI时相当于true。)

using (SqlConnection conn = new SqlConnection(ConnectString))
             {
                 string sql = "select password,level from [Test].[dbo].[User] where userid='" + username + "'";
                 using (SqlCommand cmd = new SqlCommand(sql, conn))
                 {
                     conn.Open();
                     using (SqlDataReader sdr = cmd.ExecuteReader())
                     {
                         if(sdr.Read())
                         {
                             //则将对应该用户名下的 第一个字段 即使密码(select的第一个字段) 赋给 字符串pwd,并且依次往后读取 所有的密码
                             //Trim()方法为移除字符串前后的空白
                             string pwd = sdr.GetString(0).Trim();
                             //读取器sdr获取了2列数据 第1列为密码索引为0 第2列即索引为1的是用户类型
                             string uType = sdr.GetString(1).Trim();
                             if (pwd == password)
                             {
                                 //获取登陆成功后的用户ID
                                Uid = username;
                                UserType = uType;
                                if(UserType=="普通用户")
                                 {
                                     this.Hide();
                                    User muser = new User();
                                     muser.ShowDialog();                           
                                 }      
                                 else if(UserType== "高级用户")
                                 {
                                     this.Hide();
                                     VipUser mvuser = new VipUser();
                                     mvuser.ShowDialog();
                                    
                                 }
                                 else if(UserType=="管理员")
                                 {
                                     this.Hide();
                                     Admimistor madministor = new Admimistor();
                                     madministor.ShowDialog();
                                  
                                 }                                                             
                                 }

SqlConnection:数据库连接类

SqlCommand:数据库操作类

SqlDataReader:读取

二、对数据库中的数据进行增、删、查、改(在DataGridview中)

SqlDataAdapter adp = null;
     DataSet ds = null;
        
        private void Admimistor_Load(object sender, EventArgs e)
        {
                adp = new SqlDataAdapter("select * from [Test].[dbo].[User]", Login.ConnectString);//实例化桥接器          
            ds = new DataSet();//实例化数据集           
            adp.Fill(ds);        
            dataGridView1.DataSource = ds.Tables[0];
           
           
        }
        //向表中编辑或添加数据
        private void button1_Click(object sender, EventArgs e)
        {
            SqlCommandBuilder scb = new SqlCommandBuilder(adp);
            //更新数据  
            try
            {
                //这里是关键  
                adp.Update(ds);
            }
            catch (SqlException ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
                    

 //删除表中的选中行
        private void button3_Click(object sender, EventArgs e)
        {
            foreach (DataGridViewRow dr in dataGridView1.SelectedRows)
            {
                MessageBox.Show("确认删除吗?");    
                dataGridView1.Rows.Remove(dr);//删除一条记录
            }
        }

SqlDataAdapter是 DataSet和 SQL Server之间的桥接器,用于检索和保存数据。SqlDataAdapter通过对数据源使用适当的Transact-SQL语句映射 Fill(它可更改DataSet中的数据以匹配数据源中的数据)和 Update(它可更改数据源中的数据以匹配 DataSet中的数据)来提供这一桥接。当SqlDataAdapter填充 DataSet时,它为返回的数据创建必需的表和列(如果这些表和列尚不存在)。

DataSet当成内存中的数据库,DataSet是不依赖于数据库的独立数据集合。所谓独立,就是说,即使断开数据链路,或者关闭数据库,DataSet依然是可用的,DataSet在内部是用XML来描述数据的,由于XML是一种与平台无关、与语言无关的数据描述语言,而且可以描述复杂关系的数据,比如父子关系的数据,所以DataSet实际上可以容纳具有复杂关系的数据,而且不再依赖于数据库链路。

部分引用自:

1.C#中SqlDataAdapter的使用小结 - CSDN博客
http://blog.csdn.net/nicholaseenzhu/article/details/70417407

2.360百科

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
3年前
java将前端的json数组字符串转换为列表
记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Java修道之路,问鼎巅峰,我辈代码修仙法力齐天
<center<fontcolor00FF7Fsize5face"黑体"代码尽头谁为峰,一见秃头道成空。</font<center<fontcolor00FF00size5face"黑体"编程修真路破折,一步一劫渡飞升。</font众所周知,编程修真有八大境界:1.Javase练气筑基2.数据库结丹3.web前端元婴4.Jav
Wesley13 Wesley13
3年前
Java日期时间API系列36
  十二时辰,古代劳动人民把一昼夜划分成十二个时段,每一个时段叫一个时辰。二十四小时和十二时辰对照表:时辰时间24时制子时深夜11:00凌晨01:0023:0001:00丑时上午01:00上午03:0001:0003:00寅时上午03:00上午0
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这