C# 连接SQLServer数据库及登录验证知识

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
云数据库 RDS SQL Server,基础系列 2核4GB
简介:

最近在做联系数据库的系统项目,这里重新回顾了一些数据库的知识,主要是使用VS2012与SQL Server 2012简单的做了下面两个数据库的应用,虽然比较简单,但我认为这是非常有用的知识,尤其对刚接触这样的系统知识的同学,同时也巩固了自己的知识.

一.VS简单连接数据库

使用DataGridView控件(显示和编辑不同数据类型的表格数据)来显示数据库中的数据,主要步骤是:先定义连接数据库和查询语句,再使用SqlConnection建立数据库,SqlDataAdapter连接数据库和查询命令,最后获取数据并显示在DataGridView控件上即可.运行结果如下图所示:

源程序:C#建立一个Windows窗体程序,点击窗体空白处生成Load..填写代码.

//新加命名空间
using System.Data.SqlClient;
using System.Reflection;

private void Form1_Load(object sender, EventArgs e)
{
    //定义数据内存中缓存,后面填充数据使用
    DataSet ds = new DataSet();

    //定义数据库连接语句:服务器=.(本地) 数据库名=TelephoneMS(手机管理系统)
    string consqlserver = "Data Source=.;Initial Catalog=TelephoneMS;Integrated Security=True;";

    //定义SQL查询语句
    string sql = "select * from Users";

    //定义SQL Server连接对象
    SqlConnection con = new SqlConnection(consqlserver);

    //数据库命令和数据库连接
    SqlDataAdapter da = new SqlDataAdapter(sql, con);

    try
    {
        da.Fill(ds);                                    //填充数据
        if (ds.Tables[0].Rows.Count > 0)                //判断是否符合条件的数据记录
        {
            dataGridView1.DataSource = ds.Tables[0];    //获取数据源赋值数据库控件
        }
    }
    catch (Exception msg)
    {
        throw new Exception(msg.ToString());  //异常处理
    }
    finally
    {
        con.Close();                    //关闭连接
        con.Dispose();                  //释放连接
        da.Dispose();                   //释放资源
    }
}

数据库中对应的代码和结果如下:

-------创建数据库:手机销售管理系统(TelePhone management system)--------                     
create database TelephoneMS             --创建数据库                     
use TelephoneMS                         --使用数据库
drop database TelephoneMS               --删除数据库
-------------------------------------------------------------------

-------------------------建表1 Users(角色表)------------------------
--创建表
create table Users
(
	username varchar(20) not null,       --用户名
	userpwd varchar(20) not null,        --用户密码
	userid varchar(20) not null,         --用户编号
	userrole varchar(20) not null        --用户权限
)

--删除表
drop table Users

--清空表中所有数据
truncate table Users

--设置主键:username(用户名)
alter table Users
	add constraint
pk_users primary key(username)

--设置外键:userid(用户编号)
alter table Users
	add constraint
fk_users foreign key(userid)
references UserInfo (userid)
---------------------------------------------------------------------
----------------------------(试验)插入数据查询--------------------------
insert into Users
	(username,userpwd,userid,userrole)
values('admin','123456','000001','adminst');

insert into Users
	(username,userpwd,userid,userrole)
values('Eastmount','eastmount','000002','manager');

select * from Users
----------------------------------------------------------------------

二.数据库简单登录验证

在做系统中通常需要对用户名和密码进行简单的登录验证,下面是简单的登录验证知识.运行结果如下:

主要思想是通过判断输入用户名和密码textbox数据在数据库中查询,结果存在即能实现.代码如下:

//新加命名空间
using System.Data.SqlClient;
using System.Reflection;

//点击"登录"按钮实现数据库验证登录功能
private void button1_Click(object sender, EventArgs e)
{
    //字符串赋值:用户名 密码
    string username = textBox1.Text.Trim();
    string userpwd = textBox2.Text.Trim();

    //定义数据库连接语句:服务器=.(本地) 数据库名=TelephoneMS(手机管理系统)
    string consqlserver = "Data Source=.;Initial Catalog=TelephoneMS;Integrated Security=True;";

    //定义SQL查询语句:用户名 密码
    string sql = "select * from Users where username='" + username + "' and userpwd='" + userpwd + "'";

    //定义SQL Server连接对象 打开数据库
    SqlConnection con = new SqlConnection(consqlserver);
    con.Open();

    //定义查询命令:表示对数据库执行一个SQL语句或存储过程
    SqlCommand com = new SqlCommand(sql, con);

    //执行查询:提供一种读取数据库行的方式
    SqlDataReader sread = com.ExecuteReader();

    try
    {
        //如果存在用户名和密码正确数据执行进入系统操作
        if (sread.Read())
        {
            MessageBox.Show("登录成功");
        }
        else
        {
            MessageBox.Show("请输入正确的用户名和密码");
        }
    }
    catch (Exception msg)
    {
        throw new Exception(msg.ToString());  //处理异常信息
    }
    finally
    {
        con.Close();                    //关闭连接
        con.Dispose();                  //释放连接
        sread.Dispose();                //释放资源
    }
}

实际系统中,弹出的界面“登录成功”可以通过下面的代码替换:

 Main Mwind = new Main();    //显示登录主菜单
 this.Hide();                //隐藏当前登陆窗体
 Mwind.Show();               //显示主登陆窗体

希望这些知识点能帮助巩固和学习C#连接数据库知识,如果叙述中有错误或不足之处见谅!

(By:Eastmount 2013-9-2http://blog.csdn.net/eastmount/)

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
目录
相关文章
|
16天前
|
SQL 数据库
数据库数据恢复—SQL Server数据库报错“错误823”的数据恢复案例
SQL Server附加数据库出现错误823,附加数据库失败。数据库没有备份,无法通过备份恢复数据库。 SQL Server数据库出现823错误的可能原因有:数据库物理页面损坏、数据库物理页面校验值损坏导致无法识别该页面、断电或者文件系统问题导致页面丢失。
82 12
数据库数据恢复—SQL Server数据库报错“错误823”的数据恢复案例
|
11天前
|
SQL 关系型数据库 MySQL
创建包含MySQL和SQLServer数据库所有字段类型的表的方法
创建一个既包含MySQL又包含SQL Server所有字段类型的表是一个复杂的任务,需要仔细地比较和转换数据类型。通过上述方法,可以在两个数据库系统之间建立起相互兼容的数据结构,为数据迁移和同步提供便利。这一过程不仅要考虑数据类型的直接对应,还要注意特定数据类型在不同系统中的表现差异,确保数据的一致性和完整性。
22 4
|
25天前
|
SQL 存储 数据管理
SQL Server数据库
SQL Server数据库
41 11
|
9天前
|
SQL 网络协议 数据库连接
已解决:连接SqlServer出现 provider: Shared Memory Provider, error: 0 - 管道的另一端上无任何进程【C#连接SqlServer踩坑记录】
本文介绍了解决连接SqlServer时出现“provider: Shared Memory Provider, error: 0 - 管道的另一端上无任何进程”错误的步骤,包括更改服务器验证模式、修改sa用户设置、启用TCP/IP协议,以及检查数据库连接语句中的实例名是否正确。此外,还解释了实例名mssqlserver和sqlserver之间的区别,包括它们在默认设置、功能和用途上的差异。
|
1月前
|
SQL 安全 数据库
基于SQL Server事务日志的数据库恢复技术及实战代码详解
基于事务日志的数据库恢复技术是SQL Server中一个非常强大的功能,它能够帮助数据库管理员在数据丢失或损坏的情况下,有效地恢复数据。通过定期备份数据库和事务日志,并在需要时按照正确的步骤恢复,可以最大限度地减少数据丢失的风险。需要注意的是,恢复数据是一个需要谨慎操作的过程,建议在执行恢复操作之前,详细了解相关的操作步骤和注意事项,以确保数据的安全和完整。
59 0
|
2月前
|
SQL 存储 调度
|
5月前
|
开发框架 前端开发 .NET
C#编程与Web开发
【4月更文挑战第21天】本文探讨了C#在Web开发中的应用,包括使用ASP.NET框架、MVC模式、Web API和Entity Framework。C#作为.NET框架的主要语言,结合这些工具,能创建动态、高效的Web应用。实际案例涉及企业级应用、电子商务和社交媒体平台。尽管面临竞争和挑战,但C#在Web开发领域的前景将持续拓展。
169 3
|
5月前
|
SQL 开发框架 安全
C#编程与多线程处理
【4月更文挑战第21天】探索C#多线程处理,提升程序性能与响应性。了解C#中的Thread、Task类及Async/Await关键字,掌握线程同步与安全,实践并发计算、网络服务及UI优化。跟随未来发展趋势,利用C#打造高效应用。
181 3
|
12天前
|
API C#
C# 一分钟浅谈:文件系统编程
在软件开发中,文件系统操作至关重要。本文将带你快速掌握C#中文件系统编程的基础知识,涵盖基本概念、常见问题及解决方法。文章详细介绍了`System.IO`命名空间下的关键类库,并通过示例代码展示了路径处理、异常处理、并发访问等技巧,还提供了异步API和流压缩等高级技巧,帮助你写出更健壮的代码。
26 2
|
16天前
|
SQL 开发框架 安全
并发集合与任务并行库:C#中的高效编程实践
在现代软件开发中,多核处理器普及使多线程编程成为提升性能的关键。然而,传统同步模型在高并发下易引发死锁等问题。为此,.NET Framework引入了任务并行库(TPL)和并发集合,简化并发编程并增强代码可维护性。并发集合允许多线程安全访问,如`ConcurrentQueue<T>`和`ConcurrentDictionary<TKey, TValue>`,有效避免数据不一致。TPL则通过`Task`类实现异步操作,提高开发效率。正确使用这些工具可显著提升程序性能,但也需注意任务取消和异常处理等常见问题。
28 1
下一篇
无影云桌面