SqlServer快速入门

SQL Server快速入门

数据库安装

sqlServer官方提供了免费版,叫做 SQLServer Express,官网下载安装即可

安装的时候如果选择基本安装,可以使用本地用户进行登录,并且会在本地安装SQL Server 配置管理器,可以配置简单配置服务器状态。

管理数据库官方提供了SSMS(SQL Server Manager Studio)的工具,官网也可以下载。

在初次使用的时候,登录是一个问题:

  1. 启动SQL Server: SQL Server 配置管理器 -> SQL Server服务器 -> SQL Server启动。

  2. 设置网络开放状态SQL Server 配置管理器 -> SQLServer 网络配置 -> SQLEXpress的协议 -> TCP/IP -> IP -> IPAll启动需要的端口即可。

数据库的连接

连接数据库需要提供:主机名、认证方式、用户名、密码

  • 主机名:.表示本机,本机电脑名称\示例名称,127.0.0.1,192.168.68.11

  • 认证方式:

    • Windows身份认证(使用Windows用户登录)
    • SQL Server 身份验证(SQL Server 提供的管理用户,默认管理员为sa)

⚠️:默认安装时选择的是Windows身份认证,若要使用sa用户登录,需要使用Windows认证登录到SQLServer数据库启用sa管理员用户。

数据库基本操作

/* =========================
   一、数据库操作
   ========================= */

-- 创建数据库
create database 通讯录数据库;

-- 判断数据库是否存在,不存在则创建
if not exists(select * from sys.databases where name='通讯录数据库')
begin
	create database 通讯录数据库
end

-- 使用数据库
use 通讯录数据库;

-- 删除数据库
drop database 通讯录数据库;


/* =========================
   二、数据表操作
   ========================= */

-- 创建表
create table 通讯录 (
	id int identity(1,1) primary key,
	姓名 nvarchar(20),
	电话 varchar(20),
	单位 nvarchar(50)
);

-- 判断表是否存在,不存在则创建
if not exists(select * from sys.objects where name='通讯录' and type='U')
begin
	create table 通讯录 (
		id int identity(1,1) primary key,
		姓名 nvarchar(20),
		电话 varchar(20)
	)
end

-- 删除表
drop table 通讯录;

-- 清空表数据
delete from 通讯录;
-- truncate table 通讯录;


/* =========================
   三、数据操作(增删改查)
   ========================= */

-- 增加
insert 通讯录(姓名, 电话) values('钱一','13800012345');

-- 删除
delete from 通讯录 where 姓名='赵六';

-- 修改
update 通讯录 set 姓名='钱三' where id=9;
update 通讯录 set 姓名='钱三', 单位='博物馆' where id=9;

-- 查询
select * from 通讯录;
select * from 通讯录 where 姓名 like '高%';
select * from 通讯录 order by id desc;
select count(*) from 通讯录;


/* =========================
   四、字段操作
   ========================= */

-- 增加字段
alter table 通讯录 add 邮箱 varchar(50);

-- 修改字段
alter table 通讯录 alter column 电话 varchar(30);

-- 删除字段
alter table 通讯录 drop column 邮箱;


/* =========================
   五、流程控制
   ========================= */

-- 不存在则插入
if not exists(select * from 通讯录 where 姓名='高')
	insert 通讯录(姓名) values('高');

-- 循环插入
while (select count(*) from 通讯录) < 20
begin
	insert 通讯录(姓名)
	values('高' + ltrim(str(rand()*100)))
end

ADO.NET是什么?

ADO.NET主要用于连接各种数据源数据库、Xml文档,可以使开发人员轻松的执行数据库操作,如查询、插入、更新和删除数据。

ADO.NET五大对象

  1. SqlConnection:主要用于建立数据库连接,打开关闭数据库。
  2. SqlCommand: 主要用户执行Sql语句和存储过程。设置Sql语句、参数、操作类型执行查询、插入、更新和删除操作。
  3. SqlDataReader: 主要用户读取和处理查询结果,SqlDataReader提供了逐行读取的功能。
  4. SqlDataAdapter: 用户填充数据集(DataSet)和更新数据库。SqlDataAdapter可以执行查询并将结果填充到DataSet中,接着可以使用DataSet进行数据的更新操作,包括插入、更新和删除。
  5. DataSet: 表示内存中数据的集合,可以包含多个数据表、数据关系和约束。DataSet提供了一种离线数据存储和操作的方式,你可以在不与数据库连接的情况下对数据进行操作和处理。

SQLConnection(连接数据库)

static void Main(string[] args)
{
    string connStr = "Server=127.0.0.1;Uid=sa;Pwd=123456;DataBase=StudentManager";
    using(SqlConnection conn = new SqlConnection(connStr))
    {
        Console.WriteLine(conn.State);

        conn.Open();        // 开启数据库连接 
        Console.WriteLine(conn.State);
    }
}

SQlCommand(执行SQL)

方法 用途
ExecuteNonQuery INSERT / UPDATE / DELETE
ExecuteScalar 返回单个值
ExecuteReader 返回多行数据
static void Main(string[] args)
{
    string connStr = "Server=.;DataBase=StudentManager;Uid=sa;Pwd=123456";
    using (SqlConnection conn = new SqlConnection(connStr))
    {
        conn.Open();

        // 多行查询 ExecuteReader
        string sql = "select * from Students";
        using (SqlCommand cmd = new SqlCommand(sql, conn))
        {
            using (SqlDataReader reader = cmd.ExecuteReader())
            {
                while (reader.Read())
                {
                    Console.WriteLine($"{reader["StudentName"]},{reader["StudentIdNo"]}");
                }
            }
        }

        

        // 单行查询 ExecuteScalar
        string sqlScalar = "select count(*) from Students";
        using (SqlCommand cmd = new SqlCommand(sqlScalar, conn))
        {
            int count = (int)cmd.ExecuteScalar();
            Console.WriteLine($"共{count}行数据");
        }

        
        

        // 增删改 ExecuteNonQuery();
        string updateSql = "update Students set StudentName = '李秋霖' where StudentName ='张三'";
        using(SqlCommand cmd = new SqlCommand(updateSql, conn))
        {
            int rows = cmd.ExecuteNonQuery();
            Console.WriteLine($"受影响了{rows}行");
        }
    }
}

SqlDataReader(快速只读查询)

 static void Main(string[] args)
 {
     string connStr = "Server=127.0.0.1;Uid=sa;Pwd=123456;DataBase=StudentManager";
     using (SqlConnection conn = new SqlConnection(connStr))
     {
         conn.Open(); // 打开数据库连接
         string sql = "select * from students";
         using (SqlCommand cmd = new SqlCommand(sql, conn))
         using (SqlDataReader reader = cmd.ExecuteReader())
         {
             while (reader.Read())
             {
                 int id = reader.GetInt32(0);
                 string name = reader.GetString(1).PadLeft(8);
                 string gender = reader.GetString(2).PadLeft(4);
                 DateTime birthday = reader.GetDateTime(3);
                 Console.WriteLine($"{id},{name},{gender}");
    
             }
         }
     }
 }

SqlDataAdapter + DataTable/DataSet

static void Main(string[] args)
{
    string connStr = "Server=127.0.0.1;DataBase=StudentManager;Uid=sa;Pwd=123456";

    string sql = "select StudentId as Id,StudentName as Name,Gender,Age from students";
    using (SqlConnection conn = new SqlConnection(connStr))
    using(SqlDataAdapter adapter = new SqlDataAdapter(sql,conn))
    {
        DataTable dataTable = new DataTable();
        adapter.Fill(dataTable);

        foreach(DataRow row in dataTable.Rows)
        {
            int id = (int)row["Id"];
            string name = (string)row["Name"];
            string gender = (string)row["Gender"];
            int age = (int)row["Age"];
            Console.WriteLine($"{id},{name},{gender},{age}");
        }
    }
}

参数化查询(防 SQL 注入)

static void Main(string[] args)
{
    string connStr = "Server=127.0.0.1;DataBase=StudentManager;Uid=sa;Pwd=123456";
    string sql = "select * from students where studentName = @Name";

    string name = "李四";

    using (SqlConnection conn = new SqlConnection(connStr))
    {
        conn.Open();
        using (SqlCommand cmd = new SqlCommand(sql, conn))
        {
            cmd.Parameters.AddWithValue("@Name", name);
            using (SqlDataReader reader = cmd.ExecuteReader())
            {
                while (reader.Read())
                {
                    int id = reader.GetInt32(0);
                    string stuName = reader.GetString(1);
                    string Gender = reader.GetString(2);
                    DateTime Birthday = reader.GetDateTime(3);
                    Console.WriteLine($"{id},{stuName},{Gender},{Birthday}");
                }
            }

        }
    }
}

事务(SqlTransaction)

static void Main(string[] args)
{
    string connStr = "Server=127.0.0.1;DataBase=StudentManager;Uid=sa;Pwd=123456";
    string sql = "update students set age = age + 10 where studentId = @Id";

    using (SqlConnection conn = new SqlConnection(connStr))
    {
        conn.Open();
        SqlTransaction tran = conn.BeginTransaction();

        try
        {
            using (SqlCommand cmd = new SqlCommand(sql, conn))
            {
                cmd.Transaction = tran;

                cmd.Parameters.Clear();
                cmd.Parameters.AddWithValue("@Id", 1);
                cmd.ExecuteNonQuery();

                cmd.Parameters.Clear();
                cmd.Parameters.AddWithValue("@Id", 2);
                cmd.ExecuteNonQuery();

                tran.Commit();      // 提交

            }
        }catch (Exception ex)
        {
            tran.Rollback();        // 回滚
            throw;
        }
       
    }
}

封装 DbHelper(真实项目写法)

namespace 封装DBHelper
{
    public static class DbHelper
    {
        private static readonly string connStr = "Server=127.0.0.1;DataBase=StudentManager;Uid=sa;Pwd=123456";

        /// <summary>
        /// 增删改操作
        /// </summary>
        /// <param name="sql">sql语句</param>
        /// <param name="parameters">参数</param>
        /// <returns></returns>
        public static int ExecuteNonQuery(string sql, params SqlParameter[] parameters)
        {
            using(SqlConnection conn = new SqlConnection(connStr))
            using(SqlCommand cmd  = new SqlCommand(sql, conn))
            {
                if (parameters != null)
                {
                    cmd.Parameters.AddRange(parameters);
                }

                conn.Open();
                return cmd.ExecuteNonQuery();
            }
        }


        /// <summary>
        /// 查询返回单行结果
        /// </summary>
        /// <param name="sql">sql语句</param>
        /// <param name="parameters">参数</param>
        /// <returns></returns>
        public static object ExecuteScalar(string sql, params SqlParameter[] parameters)
        {
            using (SqlConnection conn = new SqlConnection(connStr))
            using(SqlCommand cmd = new SqlCommand(sql, conn))
            {
                if (parameters != null)
                {
                    cmd.Parameters.AddRange(parameters);
                }

                conn.Open();
                return cmd.ExecuteScalar();
            }
        }


        /// <summary>
        /// 查询返回多行结果
        /// </summary>
        /// <param name="sql">sql语句</param>
        /// <param name="parameters">参数</param>
        /// <returns></returns>
        public static DataTable Query(string sql, params SqlParameter[] parameters)
        {
            using (SqlConnection conn = new SqlConnection(connStr))
            using (SqlDataAdapter adapter = new SqlDataAdapter(sql, conn))
            {
                if(parameters != null)
                {
                    adapter.SelectCommand.Parameters.AddRange(parameters);
                }

                DataTable dt = new DataTable();
                adapter.Fill(dt);
                return dt;
            }
        }
    }
}

测试DBHelper

namespace 封装DBHelper
{
    internal class test
    {
        static void Main(string[] args)
        {
            string sql = "select * from students where studentId > @Num";

            SqlParameter[] parameters =
            {
                new SqlParameter("@Num", 10)
            };

            DataTable table = DbHelper.Query(sql, parameters);

            Console.WriteLine(table.Columns[0]);
            Console.WriteLine(table.Columns[1]);
            Console.WriteLine(table.Columns[2]);
            Console.WriteLine(table.Columns[3]);
        }
    }
}
posted @ 2026-04-08 19:25  Junglezt  阅读(51)  评论(0)    收藏  举报