小言_互联网的博客

Visual Studio 新建项目 C# 连接 SQL Server 查询测试 连接字符串写法

261人阅读  评论(0)

Intro

程序员使用编程语言,将实际需要执行的数据读写操作基于数据库系统提前编写为各类用户可使用的软件。

免不了要在编程语言数据库之间做对接(测试)。

本次测试使用C#连接SQL Server,并做查询测试,环境如下:

  • 操作系统: Windows 10 pro
  • 数据库系统: SQL Server 2008 R2 (SP2)
  • IDE: Visual Studio Community 2019
  • 编程语言:C#
  • 依赖管理工具: NuGet
  • 数据库连接依赖(library): System.Data.SqlClient 4.8.2

Operation

启动 Visual Studio

【创建新项目】


新建【控制台应用程序】(只是测试数据库连接,只用命令行就可以。当然也可以新建 .net mvc 项目)


输入要新建项目的项目名


选择【目标框架】


会生成默认的项目结构(见右侧解决方案查看器),以及一个代码文件Program.cs
Run 运行方式:调试 - 开始执行(不调试)
Debug 调试方式:调试 - 开始调试

运行结果:

C# 连接 SQL Server 相关 API

就像JDBC一样,使用数据库连接信息(数据库服务器地址,用户名/密码)创建连接,准备请求对象,做读写操作,处理结果集。

因为只是为了测试连接字符串的写法,以及数据库是否成功连接(通过一次查询动作可以确定),所以不做过多的封装(否则对第一次做连接测试的普通人来说反而过于晦涩),直接面向过程编程。

using System;
using System.Data;
using System.Data.SqlClient;

namespace SqlServerConnectDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("程序运行开始");
            //string connStr = "Data Source=yujin-win10pro;Database = wyj;User Id = sa;Password = sa;";
            //string connStr = "Server=localhost;Database=wyj;Trusted_Connection=True;";
            string connStr = "Server=yujin-win10pro;Database=wyj;Trusted_Connection=True;";
            string sql = "select id, name from wyj..tb_person";
            SqlConnection conn = null;
            try
            {
                conn = new SqlConnection(connStr);
                SqlCommand cmd = new SqlCommand(sql, conn);
                SqlDataAdapter adapter = new SqlDataAdapter(cmd);
                SqlCommandBuilder build = new SqlCommandBuilder(adapter);

                DataSet dataSet = new DataSet();
                adapter.Fill(dataSet);

                DataTable resultTable = dataSet.Tables[0];
                Console.WriteLine("查询成功,即将遍历:" + resultTable);
                foreach (DataRow row in resultTable.Rows)
                {
                    foreach (DataColumn rowColumn in dataSet.Tables[0].Columns)
                    {
                        Console.Write(row[rowColumn].ToString() + "\t");
                    }
                    Console.WriteLine();
                }
            }
            catch (Exception e) 
            {
                Console.WriteLine("查询失败:" + e.Message);
            }
            finally
            {
                if (conn != null)
                {
                    conn.Close();
                }
            }
            Console.WriteLine("程序运行结束");
        }
    }
}

其中的using System.Data.SqlClient;依赖以下类库: System.Data.SqlClient,
介绍页:https://www.nuget.org/packages/System.Data.SqlClient/4.8.2?_src=template

如果还没有配置好该依赖库(其实就是System.Data.SqlClient.dll文件),会报错:

以上是没有配置依赖,且没有using System.Data.SqlClient;的情况。

添加using System.Data.SqlClient;后,报错如下:

添加 System.Data.SqlClient.dll 依赖到本项目】后:

如果对 使用 NuGet 下载依赖 的方法有疑问,
见:Visual Studio 中配置 依赖管理工具 NuGet 并搜索下载所需依赖 全流程截图

连接字符串的写法,各个字段的意义

本例中测试了三种写法,都可以成功执行。

string connStr = "Data Source=yujin-win10pro;Database = wyj;User Id = sa;Password= sa;";
//string connStr = "Server=localhost;Database=wyj;Trusted_Connection=True;";
//string connStr = "Server=yujin-win10pro;Database=wyj;Trusted_Connection=True;";
  • 字段意义

    • Serever: 表示要连接的SQL Server 服务端所在的机器(可以是ip, 可以是hostname),我的是在本地安装,所以localhost也可以用于定位。
    • Database: 数据库,别名
    • User Id: 用户名
    • Password: 密码

关于参数Server,它有几个别名:Address, Addr, Data Source, Network Address
Database的别名:Initial Catalog
User Id别名:UID
Password的别名:PWD

至于 Trusted_Connection=True;,在测试连接阶段,这个参数无关紧要。

其他的连接字符串参数见:
https://docs.microsoft.com/en-us/dotnet/api/system.data.sqlclient.sqlconnection.connectionstring?view=dotnet-plat-ext-5.0

运行截图

  • 数据库环境准备

首先,因为我测试的SQL为select * from wyj..tb_person;,所以要确保数据库里有对应的库、表、几行测试数据。
脚本:

create database wyj;

use wyj;
go

create table tb_person (
	id int,
	name nvarchar(20)
);


insert into wyj..tb_person (id, name) values 
(1, 'one'),
(2, 'two'),
(3, 'three'),
(4, 'four');

select * from wyj..tb_person;
  • 项目概览

  • 调试查看结果

Debug
鼠标移动至DataSet类型的变量resultTable上方,点击悬浮窗中的小放大镜,可以看到DataSet 可视化工具

或由代码便利返回的对象:


转载:https://blog.csdn.net/wuyujin1997/article/details/116570442
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场