sqlserver连接字符串_【自学C#】|| 笔记 39 SQL server 连接数据库

a70bc7777abfff5b7f67d932f1993c53.png

一、ADO.NET数据库操作   

    任何一个应用程序都离不开数据的存储,数据可以在内存中存储,但只能在程序运行时存取,无法持久保存。

    数据还可以在磁盘中以文件的形式存储,但文件的管理和查找又十分烦琐无法胜任大数量的存储。

    将数据存储到数据库中是在应用程序中持久存储数据的常用方式。

    在 C# 语言中提供了 ADO.NET 组件来实现连接数据库以及操作数据库中数据的功能。

    在 C# 语言中 ADO.NET 是在 ADO 的基础上发展起来的,ADO (Active Data Object) 是一个 COM 组件类库,用于访问数据库,而 ADO.NET 是在 .NET 平台上访问数据库的组件。
    ADO.NET 是以 ODBC (Open Database Connectivity) 技术的方式来访问数据库的一种技术。
    ADO.NET 中的常用命名空间如下表所示。

命名空间数据提供程序
System.Data.SqlClientMicrosoft SQL Server
System.Data.Odbc ODBC
System.Data.OracleClientOracle
System.Data.OleDbOLE DB


    在使用 ADO.NET 进行数据库操作时通常会用到 5 个类,分别是 Connection 类、 Command 类、DataReader 类、DataAdapter 类、DataSet 类。

    在接下来的讲解中我们将以连接 SQL Server 为例介绍 ADO.NET 中的对象,引用的命名空间为 System.Data.SqlClient。
    除了 DataSet 类以外,其他对象的前面都加上 Sql,即 SqlConnection、SqlCommand、SqlDataReader、SqlDataAdapter。

1) Connection 类

    该类主要用于数据库中建立连接和断开连接的操作,并且能通过该类获取当前数据库连接的状态。
    使用 Connection 类根据数据库的连接串能连接任意数据库,例如 SQLServer、Oracle、MySQL 等。
    但是在 .NET 平台下,由于提供了一个 SQL Server 数据库,并额外提供了一些操作菜单便于操作,所以推荐使用 SQLServer 数据库。

2) Command 类

    该类主要对数据库执行增加、删除、修改以及查询的操作。
    通过在 Command 类的对象中传入不同的 SQL 语句,并调用相应的方法来执行 SQL 语句。

3) DataReader 类

    该类用于读取从数据库中查询出来的数据,但在读取数据时仅能向前读不能向后读, 并且不能修改该类对象中的值。
    在与数据库的连接中断时,该类对象中的值也随之被清除。

4) DataAdapter 类

    该类与 DataSet 联用,它主要用于将数据库的结果运送到 DataSet 中保存。
    DataAdapter 可以看作是数据库与 DataSet 的一个桥梁,不仅可以将数据库中的操作结果运送到 DataSet 中,也能将更改后的 DataSet 保存到数据库中。

5) DataSet 类

    该类与 DataReader 类似,都用于存放对数据库查询的结果。
    不同的是,DataSet 类中的值不仅可以重复多次读取,还可以通过更改 DataSet 中的值更改数据库中的值。
    此外,DataSet 类中的值在数据库断开连接的情况下依然可以保留原来的值。

    (总之,又是好几个类,并用于一个大型的数据集合,也就是所谓的数据库了。)

二、Connection:连接数据库

    C# 语言中 Connection 类是 ADO.NET 组件连接数据库时第一个要使用的类,也是通过编程访问数据库的第一步。
    接下来我们来了解一下 Connection 类中的常用属性和方法,以及如何连接 SQL Server 数据库。

    Connection 类概述

    Connection 类根据要访问的数据和访问方式不同,使用的命名空间也不同,类名也稍有区别,在这里我们使用的是 SqlConnection 类,以及微软提供的 SQL Server 2014 数据库。

SqlConnection 类中提供的常用属性和方法如下表所示。

属性或方法说明
SqlConnection()无参构造方法
SqlConnection(string connectionstring)带参数的构造方法,数据库连接字符串作为参数
Connectionstring属性,获取或设置数据库的连接串
State属性,获取当前数据库的状态,由枚举类型 Connectionstate 为其提供值
ConnectionTimeout属性,获取在尝试连接时终止尝试并生成错误之前所等待的时间
DataSource属性,获取要连接的 SQL Server 的实例名
Open()方法,打开一个数据库连接
Close()方法,关闭数据库连接
BeginTransaction()方法,开始一个数据库事务

    使用 Connection 类连接数据库

    在使用 Connection 类连接 SQL Server 2014 时,先要编写数据库连接串。
    数据库连接串的书写方法有很多,这里介绍两种常用的方法。

    第1种方式

        server = 服务器名称 / 数据库的实例名 ; uid = 登录名 ; pwd = 密码 ; database = 数据库名称

    其中:

    • server:用于指定要访问数据库的数据库实例名,服务器名称可以换成 IP 地址或者数据库所在的计算机名称,如果访问的是本机数据库,则可以使用“.”来代替,如果使用的是默认的数据库实例名,则可以省略数据库实例名。例如连接的是本机的默认数据库,则可以写成“server = .”。

    • uid:登录到指定 SQL Server 数据库实例的用户名,相当于以 SQL Server 身份验证方式登录数据库时使用的用户名,例如 sa 用户。

    • pwd:与 uid 用户对应的密码。

    • database:要访问数据库实例下的数据库名。

    

    第2种方式

        Data Source = 服务器名称 \ 数据库实例名 ; Initial Catalog = 数据库名称 ; User ID = 用户名 ; Password = 密码

    其中:

    • Data Source:与第1种连接串写法中的 server 属性的写法一样,用于指定数据库所在的服务器名称和数据库实例名,如果连接的是本机的默认数据库实例,则写成“Data Source=. ”的形式。

    • Initial Catalog:与第 1 种连接串写法中的 database 属性的写法一样,用于指定在 Data Source 中数据库实例下的数据库名。

    • User ID:与第 1 种连接串写法中的 uid 属性的写法一样,用于指定登录数据库的用户名。

    • Password:与第 1 种连接串写法中的 pwd 属性的写法一样,用于指定 User ID 用户名所对应的密码。

    此外,还可以在连接字符串中使用 Integrate Security = True 的属性,省略用户名和密码,即以 Windows 身份验证方式登录 SQL Server 数据库。 将数据库连接更改如下:

        Data Source = 服务器名称 \ 数据库实例名 ; Initial Catalog = 数据库名称 ; Integrate Security = True

    需要注意的是,由于在使用 Windows 身份验证的方式登录数据库时,会对数据库的安全性造成一定的影响,因此不建议使用 Windows 身份验证的方法,而是使用 SQL Server 验证方式登录数据库,即指定用户名和密码。

三、使用 SqlConnection 类与数据库连接

    在完成了数据库连接串的编写后即可使用 SqlConnection 类与数据库连接,分以下 3 步完成。

    1) 创建 SqlConnection 类的实例

    对于 SqlConnection 类来说,上表中提供了两个构造方法,通常是使用带一个字符串参数的构造方法来设置数据库的连接串创建其实例,语句形式如下。        

SqlConnection 连接对象名 = new SqlConnection( 数据库连接串 );

    2) 打开数据库连接

    在创建 SqlConnection 连接类的实例后并没有连接上数据库,需要使用连接类的 Open 方法打开数据库的连接。
    在使用 Open 方法打开数据库连接时,如果数据库的连接串不正确或者数据库的服务处于关闭状态,会出现打开数据库失败的相关异常,因此需要通过异常处理来处理异常。
    打开数据库连接的语句形式如下。

连接对象名.Open();

    3) 关闭数据库连接

    在对数据库的操作结束后要将数据库的连接断开,以节省数据库连接的资源。
    关闭数据库连接的语句形式如下。

连接对象名.Close();

    如果在打开数据库连接时使用了异常处理,则将关闭数据库连接的语句放到异常处理的 finally 语句中,这样能保证无论是否发生了异常都将数据库连接断开,以释放资源。
    除了使用异常处理的方式释放资源外,还可以使用 using 的方式释放资源。
    具体的语句如下。

using(SqlConnection 连接对象名 = new SQLConnection( 数据库连接串 )){    //打开数据库连接    //对数据库先关操作的语句}

    using 关键字的用法主要有两个,一个是引用命名空间,一个是创建非托管资源对象。
    在 .NET 平台上资源分为托管资源和非托管资源,托管资源是由 .NET 框架直接提供对其资源在内存中的管理,例如声明的变量;非托管资源则不能直接由 .NET 框架对其管理,需要使用代码来释放资源,例如数据库资源、操作系统资源等。

    1.例

    创建与本机 SQL Server 数据库的连接,并使用异常处理。

    根据题目要求,连接 SQL Server 数据库时使用的用户名为 sa、密码为 pwdpwd,连接的数据库为test。

    创建 Windows 窗体应用程序,并在窗体上放置一个按钮,在按钮的单击事件中加入以下代码。

//编写数据库连接串string connStr = "Data source=.;Initial Catalog=test;User ID=sa;Password=pwdpwd";//创建SqlConnection的实例SqlConnection conn = null;try{    conn = new SqlConnection(connStr);    //打开数据库连接    conn.Open();    MessageBox.Show("数据库连接成功!");}catch(Exception ex){    MessageBox.Show("数据库连接失败!" + ex.Message);}finally{    if (conn != null)    {        //关闭数据库连接        conn.Close();    }}

分析:

    首先是编写数据库连接串,

         就是上面的,使用 Connection 类连接数据库。第2种方法。

    然后创建 SqlConnection 类的实例。

        之所以先为空,是为了放进try中进行局部变量转化。

    如果打开数据库成功,就提示消息框提示。

    如果报错,就提示数据库连接失败!消息框。

    最后如果数据库不等于空,所以关闭数据库连接.

运行结果:   

bbf3597a6f391fa8e2bc3ba4217200d7.png

            2.例    

    在上一实例的基础上使用 using 关键字释放资源。

    根据题目要求,省略了 finally 部分的语句,代码如下。

//编写数据库连接串string connStr = "Data source=.;Initial Catalog=test;User ID=sa;Password=pwdpwd";//创建SqlConnection的实例try{    using(SqlConnection conn=new SqlConnection(connStr))    {        //打开数据库连接        conn.Open();        MessageBox.Show("数据库连接成功!");    }}catch(Exception ex){    MessageBox.Show("数据库连接失败!" + ex.Message);}

分析:

    第6行,使用using关键字。

        而 using 关键字的用法主要有两个,一个是引用命名空间,一个是创建非托管资源对象。
    在 .NET 平台上资源分为托管资源和非托管资源,托管资源是由 .NET 框架直接提供对其资源在内存中的管理,例如声明的变量;非托管资源则不能直接由 .NET 框架对其管理,需要使用代码来释放资源,例如数据库资源、操作系统资源等。

运行结果:   

ff866e0cbbb5bc49465c6c3c1eb55088.png

    事实上,我并没有连接到数据库,所以导致了这个情况。

    之所以会这样,是因为我在安装数据库时,并没有SQL server身份验证,而是Windows身份验证,所以连接发生就属于第2种下面的另一种。

以 Windows 身份验证方式登录 SQL Server 数据库

    将数据库连接更改如下:

        Data Source = 服务器名称 \ 数据库实例名 ; Initial Catalog = 数据库名称 ; Integrate Security = True


四、SQL Server 数据库安装。(因为配置环境很重要)

    1.首先百度搜索安装。

a17ad7b4a3063f189ff71936fee286b7.png

edbeb6c0b2e9a760eededf5247461c07.png

我下载的是这个

fb7864fe68a49d7937540982757c0c81.png

    2.找到这个

ff94e63c0734928b0d17c5eb3a975afc.png

        打开后是这个

0358eb9ffbb787815cd0d23c4559dbb2.png

    选择安装,并安装右边的第一个“全新SQL Server 独立安装或向现有安装添加功能”。

    然后再点击“安装SQLServer管理工具”,跳转页面后,下载SSMS。

61ecad76b61541b1fd1ad54fa732679f.png

        总之就是这两个安装包,并按照提示进行下一步安装。

2f9379cc6a1dc54f313534598a1783ac.png

        首先是SQL2019,安装完后点击自定义。

        然后弹出这个:

3bb4649d3986fdb23b1e527e9a73b345.png

然后进行下一步逐一安装,唯一注意的是,“数据库引擎配置”。

    因为上述表示,用Windows身份验证模式不好,所以就用混合模式

7a8e3e5c21bf58d685e6dbf3294be779.png

不过我这里因为出现密码设置过于简单的提示,所以就暂时使用Windows身份验证模式了。

然后就是下一步下一步。

然后再安装:SSMS-Setup-CHS.exe,也就是数据库管理工具。

2f9379cc6a1dc54f313534598a1783ac.png

83f67a174dfed1141f3213ca2e876c66.png

安装完后,在电脑菜单栏中找到这个,并打开。

63e78c566c58ec42090b52ae979ec309.png

6a905a65b01dee0e608656947546480a.png

    然后在菜单栏的文件-连接对象资源管理器。

dbc1797a57618176a1b279206d81474f.png

    弹出这个

56b7167d02f973db5c499eccc35f5178.png

    服务器的名称也就确定了。

    而我这时先使用Windows身份验证进行登录。

    然后是这样的:

565d5a7e5ecf59ebfe6411a2c68089c7.png

    右键这个,点属性:

72582c95189e1b3887536a2a8b65f1c6.png

    在安全性中,切换“SQL Server和Windeos身份验证模式”。

08a7758ac75955c018f35ef2b1d21b5e.png

    然后打开数据库-》安全性-》登录名-》sa账号,并双击。

9b0a603e9bf9becd9de8b950e0ba8e0f.png

    可修改密码

e8589303beafabaef514033c00869e82.png

并且点到状态,激活启动。

58314f6505516ae375ebe6ebc3c3196b.png

都设置完后,再点击重启一些数据库。

806a81c0961f07c3dfd1003360fe7130.png

然后就能使用sa账户访问了。

250fcb84d3e685eb8682146d4db043cc.png

    之后就是新建数据库:

de18d672f43c41f4f83bdf90972c2d71.png

        添加数据库的名称

d7a5db0122e5a97ebdebedc26396369d.png

然后在表中进行创建数据表。

b2d638d5576acb3232bda3077288f85a.png

列名:数据类型

e94e2044067e79494bddcd92885ad770.png

47ab2312962ada0f7400e4821e297228.png

    然后Ctrl+s保存,并刷新一下,找到保存的表,再填写内容。

021a45a589a4995c34ca007ba63678ea.png

    右键-》编辑前200行,就可以添加了。

027f0842670b6b213d723b5b466e240c.png

    添加内容元素,就可以在VS进行操作了。

5af11b405381989a237811f33ff8de2d.png

    (大致就这些,虽然有些乱,不过熟悉了也就发现没什么不同的。)

    首先就是下载软件,SQL server数据库,和管理工具。

        (如果习惯代码的话,也可以使用指令进行数据库的创建,表的创建和录入。这里暂时先不管了,以后再说。)

    然后就是配置身份验证,初期不让用sa,那就先Windows身份进入。

        再通过“安全性”-》“登录名”里启动sa,并且修改密码什么的,再重启一下数据库。

    最后就是创建数据库,表的创建和数据录入了。

        也就是“数据库”右键创建;

        找到创建的数据库名-》进入“表”,再右键创建保存。

        然后刷新,否则看不到。

        最后再找到表名,右键“编辑前200行”进行手动录入。

            而表名-》右键“设计”,可以重新构建表的类型。

    基本上就是这些吧!然后就是注意数据类型,以及其他是否为空的条件,从而保证表的完整性,严谨性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/573684.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android Studio、 补充知识以及主要组件

转载于:https://www.cnblogs.com/arxk/p/5410597.html

using(){},Close(),Dispose()的区别

//用Close(),Dispose()方式关闭连接 string connString "Data Source(local);Initial CatalogLinq;Integrated SecuritySSPI"; SqlConnection conn new SqlConnection(connString); conn.Open(); conn.Close(); conn.Dispose();//用using方式关闭连接 string connS…

一个域名解析到另一个域名_注册域名公司|教你如何注册一个.net域名

近几年各后缀域名注册量都在增加,很多行业知道线上业务平台搭建的重要性,都优先制作网站布局线上,建站肯定需要域名,所以这也是带动域名注册量上涨原因之一。.COM、.NET域名一直是建站注册域名首选,.COM域名大家可能相…

java jedis connect timed out_Java连接Redis connection timed out 报错的解决方法

Java连接Redis connection timed out 报错的解决方法踩坑场景在使用 RedisTemplate 连接 Redis 进行操作的时候,发生了如下报错:报错信息如下:Caused by: io.netty.channel.ConnectTimeoutException: connection timed out: /192.168.73.10:6…

富文本存储型XSS的模糊测试之道

富文本存储型XSS的模糊测试之道 凭借黑吧安全网漏洞报告平台的公开案例数据,我们足以管中窥豹,跨站脚本漏洞(Cross-site Script)仍是不少企业在业务安全风险排查和修复过程中需要对抗的“大敌”。 XSS可以粗分为反射型XSS和存储型…

phpstorm xdebug配置

phpstorm 8.0.3版本 1.本身自带xdebug插件 2.在xampp的php.ini中最后中添加(如果有[XDebug]配置替换) [XDebug]zend_extension "D:\Program Files\xampp\php\ext\php_xdebug.dll";xdebug.profiler_append 0;xdebug.profiler_enable 1;xdebu…

springmvc+ztree v3实现类似表单回显功能

在做权限管理系统时,可能会用到插件zTree v3,这是一个功能丰富强大的前端插件,应用很广泛,如异步加载菜单制作、下拉选择、权限分配等。在集成SpringMVC中,我分别实现了zTree的添删改查,本节主要实现类似表单回显功能。…

Android应用安全开发之浅谈网页打开APP

一、网页打开APP简介 Android有一个特性,可以通过点击网页内的某个链接打开APP,或者在其他APP中通过点击某个链接打开另外一个APP(AppLink),一些用户量比较大的APP,已经通过发布其AppLink SDK,开…

php微信拍照图库js接口,ThinkPHP微信实例——JSSDK图像接口多张图片上传下载并将图片流写入本地...

发布图片最多可添加9张作品发布wx.config({debug: false,appId: {$signPackage["appid"]},timestamp: {$signPackage["timestamp"]},nonceStr: {$signPackage["noncestr"]},signature: {$signPackage["signature"]},jsApiList: [// 所…

vue防抖和节流是什么_JavaScript防抖与节流,你知道多少?

JavaScript 的节流和防抖已经是老生畅谈的问题了,对于前端行业技术大牛来讲不过是小菜一碟,而对于绝大多数前端小白或初级工程师,绝对是必备的知识,值得学习。接下来小郭就带大家一起学习“防抖”与“节流”。防抖不知道大家第一次…

php中循环跳过,php for循环的exit / break / continue /goto 停止、跳过循环、继续循环...

php 与 JavaScript 有很多相似的地方&#xff1b; for循环中也有两个相同&#xff1b; 只是 php 比 js 多了一个 exit &#xff0c; 其他用法一样&#xff1b;for($i 1;$i<11;$i){if($i3){// exit; //当$i 3 代码停止运行&#xff0c;包括循环外的&#xff0c;后面的也停止运…

location php,Nginx服务器中的location配置详解

语法location [|~|~*|^~] /uri/ {...}规则 &#xff1a; 表示精确的URI匹配(有兴趣的同学可以看一下url和uri的区别)&#xff5e;&#xff1a; 表示区分大小写的正则匹配&#xff5e;*&#xff1a;表示不区分大小写的正则匹配!~ && !~*&#xff1a;表示区分大小写不匹…

java要频繁调用容器时_Java知识点梳理

1、Struts2和SpringMVC的区别(1)设计理念&#xff1a;前者为有状态的Action(均为多例)&#xff0c;Action对象属性字段承载请求、响应&#xff0c;后者一般为无状态的Controller&#xff0c;请求直接封装到方法的参数中&#xff1b;(2)集中访问点不同&#xff1a;都属于前端控制…

基于busybox的Linux小系统制作 (initrd)

我们有时候有需要在busybox基础上&#xff0c;制作linux&#xff0c;可是却不知道具体怎么做&#xff0c;这里将对基于busybox的linux小系统制作做出详细的步骤说明。准备环境&#xff1a;1、一个Redhat完整系统的虚拟机&#xff0c;本次实例使用的是Redhat Enterprise Linux 5…

Java异常持久化,Log4j进行日志的数据库持久化,说SQL语法异常。

Log4j进行日志的数据库持久化&#xff0c;说SQL语法错误。。。在properties的配置中。。。。log4j.appender.db org.apache.log4j.jdbc.JDBCAppenderlog4j.appender.db.BufferSize1log4j.appender.db.drivercom.mysql.jdbc.Driverlog4j.appender.db.URLjdbc:mysql://localhost…

实现光晕效果_马自达6车灯升级激光四透镜实现四近四远光

汽车前照明大灯升级案例车型&#xff1a;马自达6灯泡色温&#xff1a;5600K透镜案例&#xff1a;米石激光 TMF激光原车灯泡型号&#xff1a;H1 H1雾灯&#xff1a;H3原车瓦数&#xff1a;80-100W升级方式&#xff1a;支架安装方式&#xff1a;有密封胶性质&#xff1a;热LED解码…

matlab欧拉法程序,欧拉法matlab程序.doc

欧拉法matlab程序.doc 1.Euler法function[x,y]naeuler(dyfun,xspan,y0,h)xxspan(1):h:xspan(2);y(1)y0;forn1:length(x)-1y(n1)y(n)h*f(dyfun,x(n),y(n));endxx ;yy ;x10:0.2:1;y1(12*x1).^0.5;plot(x,y,x1,y1)>>dyfuninline( y-2*x/y );[x,y]naeuler(dyfun,[0,1],1,0.2)…

dns服务器v6解析 windows_04:缓存DNS、Split分离解析、电子邮件通信、Web服务器项目实战...

一、 环境的准备关闭两台虚拟机的SELinux[rootsvr7 ~]# setenforce 0 #修改当前运行模式[rootsvr7 ~]# getenforce #查看当前运行模式Permissive[rootsvr7 ~]# vim /etc/selinux/config #永久修改SELINUXpermissive设置两台虚拟机防火墙[rootsvr7 ~]# firewall-cmd …

linux查看php日志命令,linux查看日志的三种命令是什么,linux查看进程命令

linux查看日志的三种命令是什么Linux查看日志的三个命令是什么&#xff0c;linux查看日志有三个命令&#xff1a;1。查看实时更改日志&#xff0c;代码为[tail-f filename]&#xff1b;2.搜索关键字附近的日志代码为[cat-n filename | grep ‘ keyword ‘]&#xff1b;3.输入编…

控制器对应view生命周期

一、控制器view创建的六种方式 1.有没有同名xib创建2.通过 storyboard 创建3.有指定xib情况下创建4.有同名xib情况5.有同名去掉controll的情况6.loadveiw 二、创建控制器view的优先级三、控制器view加载顺序0、- (void)loadView …