SqlServer快速入门
SQL Server快速入门
数据库安装
sqlServer官方提供了免费版,叫做 SQLServer Express,官网下载安装即可
安装的时候如果选择基本安装,可以使用本地用户进行登录,并且会在本地安装SQL Server 配置管理器,可以配置简单配置服务器状态。
管理数据库官方提供了SSMS(SQL Server Manager Studio)的工具,官网也可以下载。
在初次使用的时候,登录是一个问题:
-
启动
SQL Server:SQL Server 配置管理器 -> SQL Server服务器 -> SQL Server启动。 -
设置网络开放状态
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五大对象
SqlConnection:主要用于建立数据库连接,打开关闭数据库。SqlCommand: 主要用户执行Sql语句和存储过程。设置Sql语句、参数、操作类型执行查询、插入、更新和删除操作。SqlDataReader: 主要用户读取和处理查询结果,SqlDataReader提供了逐行读取的功能。SqlDataAdapter: 用户填充数据集(DataSet)和更新数据库。SqlDataAdapter可以执行查询并将结果填充到DataSet中,接着可以使用DataSet进行数据的更新操作,包括插入、更新和删除。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]);
}
}
}

浙公网安备 33010602011771号