1.点击左侧连接图标
或者点击连接
2.点击数据库引擎(如果是第一种方法的跳至第三步)
3.服务器名称为local或一个点(.),身份验证选择sqlserver身份验证,登录名为sa,密码为安装时设置的密码
4.如果出现这种情况,说明SqlServer未打开
5.打开服务窗口,找到SQL Server(MSSQLSERVER),启动服务
创建数据库的第一种方式:SqlServer Management Studio管理工具进行可视化创建。
2.输入数据库名称,可以更改初始大小和自动增长
3.双击点开刚创建的数据库,找到“表”
创建数据库文件的基本格式:
create database <数据库名称>
(
filename = [完整路径],
name = [数据库名称],
size = [初始大小],
maxsize = [最大大小],
filegrowth = [增长率] --增长率可以使用mb,%做单位
)
创建用于管理用户数据的数据库:
create database db_userManager
on primary--创建主数据库标志,primary表示属于primary文件组,默认属于primary,可省略
(
filename = "C:\db_userManager.mdf",
--filename指主数据库的物理名称,决定了数据库文件的存储位置,必须是完整路径
name = "userManager",
--name指主数据库的逻辑名称,决定在数据库管理器中的名称
size = 5mb,
--size指主数据库的初始大小
maxsize = 10mb,
--maxsize指主数据库的最大大小
filegrowth = 10%
--filegrowth指主数据库从初始大小增长的增长率
)
log on --创建数据库的日志文件的标志
(
filename = "C:\db_userManager.ldf",
name = "userManager_log",
size = 1mb,
maxsize = 5mb,
filegrowth = 1mb
)
10.输入列名、数据类型
11.右键“name”列,选择“设置主键”
12.右键选项卡,选择“保存” 或 Ctrl + s
13.双击“表”,即可找到你创建的表了:)
14.如果想查看表中的内容,右键表,选择“编辑前200行”
创建数据表的基本格式:
create table <数据表名称>
(
[字段名称] [数据类型](数据大小) [字段约束],
......
)
创建用于存储用户账号密码的信息:
use db_userManager--设置当前数据库为db_userManager
go --批处理的分隔符,用于接续后面的语句
create table tb_user
(
name varchar(20) primary key,
pwd varchar(20),
--varchar表示存储可变长度的字符串类型,括号内可设定初始大小
time datetime
--datetime表示存储年月日时分秒的时间
)
类型 | 长度 | 使用说明 | 长度说明 |
---|---|---|---|
char(n) | 定长 | 索引效率高 程序里面使用trim去除多余的空白 | n 必须是一个介于 1 和 8,000 之间的数值,存储大小为 n 个字节 |
varchar(n) | 变长 | 效率没char高 灵活 | n 必须是一个介于 1 和 8,000 之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节 |
text(n) | 变长 | 非Unicode数据 | 不用指定长度 |
nchar(n) | 定长 | 处理unicode数据类型(所有的字符使用两个字节表示) | n 的值必须介于 1 与 4,000 之间。存储大小为 n 字节的两倍 |
nvarchar(n) | 变长 | 处理unicode数据类型(所有的字符使用两个字节表示) | n 的值必须介于 1 与 4,000 之间。字节的存储大小是所输入字符个数的两倍。所输入的数据字符长度可以为零 |
ntext(n) | 变长 | 处理unicode数据类型(所有的字符使用两个字节表示) | 不用指定长度 |
为name属性增加约束primary key,也就是将它设置为这张表的主键,主键唯一标识了数据表中的一条记录,设定为主键的属性自动添加 unique 和 not null 约束。
unique:英语意思为独一无二的,保证该属性的值不能重复
not null:字面意思,就是保证该属性的值不能为空(NULL)
注意直接添加unique和not null约束,与添加primary key约束不同,一张数据表只能设置一个主键,一张数据表也应该设置一个主键。
在编写代码之前,先来了解一下需要用到的动态链接库(DLL)。
DLL类库 | 功能 |
---|---|
System.Data.SqlClient | 这个类集合用于访问托管空间中的 SQL Server 数据库 |
这是微软官方给出的介绍,简单总结一下就是这个类库是用来连接数据库,执行Transact-SQL语句,添加、更新、读取数据的。
了解需要用到的类库后,我们需要知道需要使用其中的哪些类。
类 | 作用 |
---|---|
SqlConnection | SQL Server 数据库的一个打开的连接。 |
SqlCommand | 对 SQL Server 数据库执行的一个 Transact-SQL 语句或存储过程。 |
SqlDataAdapter | 用于填充DataSet(临时数据库)与DataTable(临时数据表),也可以用来更新数据库 |
SqlParameter | SqlCommand的参数,也可以用于DataSet与DataTable的映射 |
数据写入数据库:
using System.Data.SqlClient;
class SqlServerWriter : from
{
//sqlserver连接字符串
string connString = "server = .;database = db_userManager;user id = sa;password = 123;";
//注册按钮事件
private void btn_regitor_Click(object seeder,EventArg e)
{
//检测账号、密码是否为空
if(!(string.IsNullOrWhiteSpace(txt_username.Text) || string.IsNullOrWhiteSpace(txt_password.Text)))
{
try
{
//创建连接
SqlConnection conn = new SqlConnection(connString);
//打开连接
conn.Open();
//Transact-SQL语句
string command = "insert into tb_user (name,pwd,time) values (@username,@password,@time)";
//创建参数映射
SqlParameter[] paras =
{
new SqlParameter("@username",DbDataType.Varchar,20),
new SqlParameter("@paasword",DbDataType.Varchar,20),
new SqlParameter("@time",DbDataType.DateTime)
};
paras[0].Value = txt_username.Text;
paras[1].Value = txt_password.Text;
paras[2].Value = DateTime.UtcNow.ToString();
//将参数传给command语句
foreach(SqlParameter para in paras)
{
cmd.Parameter.Add(para);
}
//创建command语句
SqlCommand cmd = new SqlCommand(command,conn);
//执行并判断是否成功
if(cmd.ExcuteQaurt() > 0)
{
MessageBox.Show("注册成功!");
}
conn.Close();//关闭与数据库的连接,并释放内存
}
catch(Exception _e)
{
//出现主键约束冲突,说明用户名已被注册
if(_e.message.IndexOf("PRIMARY KEY") >= 0)
{
MessageBox.Show("用户名已被注册!")
}
MessageBox.Show(_e.message);
throw;
}
}
}
}
从数据库读取数据:
using System.Data.SqlClient;
class SqlServerReader : from
{
bool isNotFound = false;//标识用户名是否找到
private void btn_login_Click(object seeder,EventArg e)
{
try
{
SqlConnection conn = SqlConnection(connString);
conn.Open();
string command = "select * from tb_user"
SqlCommand cmd = new SqlCommand(command,conn);
SqlDataAdpter dataAdpter = new SqlDataAdpter(cmd);//通过数据适配器执行命令
DataTable dt = new DataTable();//创建一张临时数据表
dataAdpter.Fill(dt);//将命令执行的结果存入临时数据表
dataAdpter.Dispose();//释放适配器的内存
//查找用户名、密码是否匹配
for(int i = 0;i < dt.Rows.Count;i++)
{
isNotFound = false;
if(dt.Rows[i]["name"] == txt_username.Text)
{
if(dt.Rows[i]["pwd"].Text == txt_password.Text)
{
MessageBox.Show("登录成功!");
break;
}
}
else
{
isNotFound = true;
}
}
dt.Dispose();//释放临时数据表内存
if(isNotFound)
{
MessageBox.Show("用户名不存在!");
}
conn.Close();//关闭与数据库的连接,并释放内存
}
catch(Exception _e)
{
MessageBox.Show(_e.message);
throw;
}
}
}