C#连接SqlServer数据库总结(初步实现注册、登录功能)

C#连接数据库总结

  • 1.配置SqlServer数据库
    • 1.连接数据库服务器
    • 2.创建数据库
      • 通过可视化界面创建
      • 通过Transact-SQL语句创建
    • 3.创建数据表
      • 通过可视化界面创建
      • 通过Transact-SQL语句创建
  • 2.用C#连接数据库
    • 1.需要的动态链接库(DLL)
    • 2.数据库读写

本教程使用sqlserver数据库演示

1.配置SqlServer数据库

  • 连接数据库服务器
  • 创建主数据库和日志文件
  • 创建数据表

1.连接数据库服务器

1.点击左侧连接图标
C#连接SqlServer数据库总结(初步实现注册、登录功能)_第1张图片
或者点击连接
C#连接SqlServer数据库总结(初步实现注册、登录功能)_第2张图片
2.点击数据库引擎(如果是第一种方法的跳至第三步)
C#连接SqlServer数据库总结(初步实现注册、登录功能)_第3张图片
3.服务器名称为local或一个点(.),身份验证选择sqlserver身份验证,登录名为sa,密码为安装时设置的密码
C#连接SqlServer数据库总结(初步实现注册、登录功能)_第4张图片
4.如果出现这种情况,说明SqlServer未打开
C#连接SqlServer数据库总结(初步实现注册、登录功能)_第5张图片
5.打开服务窗口,找到SQL Server(MSSQLSERVER),启动服务
C#连接SqlServer数据库总结(初步实现注册、登录功能)_第6张图片

2.创建数据库

通过可视化界面创建

创建数据库的第一种方式:SqlServer Management Studio管理工具进行可视化创建。

1.右键数据库,选择“新建数据库”
C#连接SqlServer数据库总结(初步实现注册、登录功能)_第7张图片

2.输入数据库名称,可以更改初始大小和自动增长
C#连接SqlServer数据库总结(初步实现注册、登录功能)_第8张图片
3.双击点开刚创建的数据库,找到“表”
C#连接SqlServer数据库总结(初步实现注册、登录功能)_第9张图片

通过Transact-SQL语句创建

1.点击新建查询
C#连接SqlServer数据库总结(初步实现注册、登录功能)_第10张图片
2.输入语句

创建数据库文件的基本格式:

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
)

3.创建数据表

通过可视化界面创建

9.右键表,选择”新建表“
C#连接SqlServer数据库总结(初步实现注册、登录功能)_第11张图片

10.输入列名、数据类型
C#连接SqlServer数据库总结(初步实现注册、登录功能)_第12张图片
11.右键“name”列,选择“设置主键”
C#连接SqlServer数据库总结(初步实现注册、登录功能)_第13张图片
12.右键选项卡,选择“保存” 或 Ctrl + s
C#连接SqlServer数据库总结(初步实现注册、登录功能)_第14张图片

13.双击“表”,即可找到你创建的表了:)
C#连接SqlServer数据库总结(初步实现注册、登录功能)_第15张图片
14.如果想查看表中的内容,右键表,选择“编辑前200行”
C#连接SqlServer数据库总结(初步实现注册、登录功能)_第16张图片

通过Transact-SQL语句创建

创建数据表的基本格式:

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约束不同,一张数据表只能设置一个主键,一张数据表也应该设置一个主键。

2.用C#连接数据库

1.需要的动态链接库(DLL)

在编写代码之前,先来了解一下需要用到的动态链接库(DLL)。

DLL类库 功能
System.Data.SqlClient 这个类集合用于访问托管空间中的 SQL Server 数据库

这是微软官方给出的介绍,简单总结一下就是这个类库是用来连接数据库,执行Transact-SQL语句,添加、更新、读取数据的。

了解需要用到的类库后,我们需要知道需要使用其中的哪些类。

作用
SqlConnection SQL Server 数据库的一个打开的连接。
SqlCommand 对 SQL Server 数据库执行的一个 Transact-SQL 语句或存储过程。
SqlDataAdapter 用于填充DataSet(临时数据库)与DataTable(临时数据表),也可以用来更新数据库
SqlParameter SqlCommand的参数,也可以用于DataSet与DataTable的映射

2.数据库读写

数据写入数据库:

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;
		}
	}
}

你可能感兴趣的:(C#笔记,sql,c#)