C#为任意组件开发登录功能的记录

news2024/9/21 3:19:44

非常简单,直接给出代码:

数据库操作类

这个无需多言就是简单的包含了数据操作的内容,允许你在这一个类中写完关于本地数据库或者云数据库操作的逻辑,与登录逻辑分开哦。

注意,如果你的软件要给别人运行使用,你的数据库信息也可以存在授权文件中,以避免出现信息的泄露。如果你使用软件直接操作数据库可能存在危险,请注意连接数据库时对sql语句的检查。

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace chuankouzhushou1
{
    internal class dataoperator
    {
        private static string connString = @"Data Source=DREAMER;Database=db_Mydb;User ID=sa;Pwd=yourpasswd;";

        public static SqlConnection connection = new SqlConnection(connString);

        public int ExecuteSQL(string sql)
        {
            SqlCommand cmd = new SqlCommand(sql, connection);
            if (connection.State == ConnectionState.Closed)
                connection.Open();
            int num = Convert.ToInt32(cmd.ExecuteScalar());        //执行查询
            connection.Close();
            return num;
        }
        public int ExecuteSQLResult(string sql)
        {
            SqlCommand cmd = new SqlCommand(sql, connection);
            if (connection.State == ConnectionState.Closed)
                connection.Open();
            int result = cmd.ExecuteNonQuery();
            connection.Close();
            return result;
        }
        public DataSet GetDataSet(string sql)
        {
            SqlDataAdapter sqlda = new SqlDataAdapter(sql, connection);    //指定要执行的SQL语句
            DataSet ds = new DataSet();
            sqlda.Fill(ds);
            return ds;
        }

        public SqlDataReader GetDataReader(string sql)
        {
            SqlCommand cmd = new SqlCommand(sql, connection);
            if (connection.State == ConnectionState.Closed)
                connection.Open();
            SqlDataReader dataReader = cmd.ExecuteReader();//添加参数CommandBehavior.CloseConnection就可以自动释放连接
            return dataReader;
        }
    }
}

输入的监测 

 private bool ValidateInput()
 {
     if (tx_ID.Text.Trim() == "")                            //登录账号
     {
         MessageBox.Show("请输入登录账号", "登录提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
         tx_ID.Focus();                                    //使登录账号文本框获得鼠标焦点
         return false;
     }
     else if (tx_ID.Text.Length>30)
     {
         MessageBox.Show("请输入正确的登录账号", "登录提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
         tx_ID.Focus();                                    //使登录账号文本框获得鼠标焦点
         return false;
     }
     else if (tx_ID.Text.Length > 5 && tx_PWD.Text.Trim() == "")   //密码
     {
         MessageBox.Show("请输入密码", "登录提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
         tx_PWD.Focus();                                    //使密码文本框获得鼠标焦点
         return false;
     }
     return true;
 }

 登录按钮(回车实现登录)


        private void loginbtn(object sender, EventArgs e)
        {
            if(ValidateInput())
            {
                int num= 0;
                string sql = "select count(*) from usertb where userid=" + int.Parse(tx_ID.Text.Trim()) + " and userpwd = '" + tx_PWD.Text.Trim() + "'";
                try
                {
                    num = dbop.ExecuteSQL(sql);
                }
                catch {
                    //MessageBox.Show(e.ToString());
                }   
                
                if (num == 1)//验证通过
                {
                    publicinfo.userid = int.Parse(tx_ID.Text.Trim());
                    // 执行新的SQL查询来获取userid,username和userlv
                    sql = "select userid, username, userlv from usertb where userid=" + publicinfo.userid;
                    SqlDataReader reader = dbop.GetDataReader(sql);
                    if (reader.Read())
                    {
                        publicinfo.userid = reader.GetInt32(0);
                        publicinfo.username = reader.GetString(1);
                        publicinfo.userlv = reader.GetInt32(2);
                    }
                    reader.Close();
                    mainfrm frm_Main = new mainfrm();
                    frm_Main.Show();
                    this.Visible = false;
                }
                else
                {
                    MessageBox.Show("登录失败!", "登录提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            
        }

        private void tx_ID_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (char.IsDigit(e.KeyChar) || (e.KeyChar == '\r') || (e.KeyChar == '\b'))
                e.Handled = false;
            else
                e.Handled = true;
        }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2150975.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电脑连接手机热点只能登陆qq和微信 浏览器无法正常上网的原因

电脑连接手机热点只能登陆qq和微信 浏览器无法正常上网的原因 浏览器有报错dns错误 但是火绒无法正常修复 DNS配置异常 chrome报错DNS_PROBE_FINISHED_BAD_CONFIG 错误原因在ipv4dns服务器他的地址,如果是自动获取 是192.168.208.143 和ipv4地址冲突,导致不正常,我查看本机…

【南方科技大学】CS315 Computer Security 【Lab3 Format String Vulnerability】

目录 Lab OverviewLab TasksTask 1: The Vulnerable ProgramTask 2: Understanding the Layout of the StackTask 3: Crash the ProgramTask 4: Print Out the Server Program’s MemoryTask 5: Change the Server Program’s MemoryTask 6: Inject Malicious Code into the Se…

【第十一章:Sentosa_DSML社区版-机器学习分类】

目录 11.1 逻辑回归分类 11.2 决策树分类 11.3 梯度提升决策树分类 11.4 XGBoost分类 11.5 随机森林分类 11.6 朴素贝叶斯分类 11.7 支持向量机分类 11.8 多层感知机分类 11.9 LightGBM分类 11.10 因子分解机分类 11.11 AdaBoost分类 11.12 KNN分类 【第十一章&…

С++第十三节课 string初体验

一、string类的相关函数 string实际上也就是一个管理字符的顺序表! 如果我们需要遍历一个字符串,怎么实现? 我们可以通过下标访问操作符 size实现字符串的遍历! int main() {string s1("hello world");// 遍历一个字…

玩具车检测系统源码分享

玩具车检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Visio…

zynq SDK 关于SD卡报错

在修改了BD的部分代码之后,重新综合工程生成bit,之后刷新hdf文件,在SDK端就出现了SD卡相关的函数未定义的报错: Description Resource Path Location Type E:\Work\VivadoPrj\Prj1\project_1\project_1.sdk\Test\Debug/…/src/hel…

arm开发板通信

c语言复习 查询Ubuntu版本(18.04)和内核(5.4) 查询使用软件的版本号 arm开发板通信- 直播视频-- 项目第二天下午 2024-09-20 linux和windows下操作开发板前提是开发板中已经导入系统 以下是具体操作 linux下开发板的操作 li…

Java项目实战II基于Java+Spring Boot+MySQL的读书笔记共享平台(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、论文参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 在信息爆炸…

无人机黑飞打击技术详解

随着无人机技术的普及,无人机“黑飞”(未经授权或违反规定的飞行)现象日益严重,对公共安全、隐私保护及重要设施安全构成了严重威胁。为有效应对这一挑战,各国政府和安全机构纷纷研发并部署了一系列无人机黑飞打击技术…

龙头名企HR数字创新:超8成参调企业上线电子签

近日,法大大与人力资源智享会(以下简称“智享会”)联合发布了《第七届人力资源共享服务中心研究报告》(点击阅读及下载:最新!《第七届人力资源共享服务中心研究报告》重磅来袭),该报…

反转字符串中的单词--力扣151

反转字符串中的单词 题目思路代码 题目 思路 题目的难点在于首先要清除多余的空格,并且单词之间要留一个空格,首单词前和末尾单词后不能有多余空格。我们使用双指针去除所有的空格,然后在处理完一个单词后手动加一个单词。具体思路是当快指针…

李沐 过拟合和欠拟合【动手学深度学习v2】

模型容量 模型容量的影响 估计模型容量 难以在不同的种类算法之间比较,例如树模型和神经网络 给定一个模型种类,将有两个主要因素: 参数的个数参数值的选择范围 VC维

GBDT算法原理及其公式推导过程

GBDT(Gradient Boosting Decision Tree,梯度提升决策树)是一种集成学习方法,主要用于回归和分类任务。它的基本思想是通过迭代地构建一系列弱学习器(通常是决策树),并将这些弱学习器组合成一个强…

C++11 新的类功能

前言 上一期我们对右值引用和完美转发作了介绍,本期我们接着上期继续介绍C11的新的类功能! 目录 前言 • 新的类功能 默认成员函数 类成员变量初始化 强制生成默认函数的关键字default 禁止生成默认成员函数的关键字delete 继承和多态中的final…

流动网红打卡车!苏州金龙海格双层巴士带你体验别样津门津韵

近日,由文化和旅游部主办,天津市文化和旅游局等单位承办的2024中国文化旅游产业博览会在天津拉开帷幕,展会期间,来自全国各地的文旅产品精彩亮相。而在天津交通集团展台,来自苏州金龙海格客车制造的网红双层观光“音乐…

redis安装(以6.0.13为例)

redis-6.0.13安装 1.创建安装目录2. 上传安装包3. 替换repo文件4.依赖安装5. redis安装5.1 解压5.2 编译5.3 安装5.4 配置 6. 常用命令 1.创建安装目录 mkdir -p /apps/scripts/ cd /apps/scripts/2. 上传安装包 将redis-6.0.13.tar.gz 上传至/apps/scripts/目录下 下载链接…

一站式语音识别服务:中文、方言、多语言全覆盖

在当今全球化与多元化的社会背景下,语音识别技术的需求日益增长。智匠MindCraft凭借其先进的语音识别功能,不仅覆盖了标准的中文识别,还扩展到了多种方言和多国语言的识别,为用户提供了一站式的语音转文本解决方案。 技术亮点 1…

c# 视觉识别图片文字 二维码

1.二维码识别 插件 ZXing.Net using System; using System.Drawing; // 如果你使用的是System.Drawing.Common using ZXing;class Program {static void Main(){string imagePath "path_to_your_qr_code_image.png";var barcodeBitmap (Bitmap)Image.FromFile(im…

9.20哈好

函数体 #include"SeqList.h"void SeqList::init(int n) {this->ptrnew data[n];this->len0;this->sizen; }bool SeqList::empty() {return this->len0; }bool SeqList::full() {return this->sizethis->len; }void SeqList::push_back(data e) {i…

Zookeeper安装使用教程

# 安装 官网下载安装包 #配置文件 端口默认8080,可能需要更改一下 #启动 cd /Users/lisongsong/software/apache-zookeeper-3.7.2-bin/bin ./zkServer.sh start #查看运行状态 ./zkServer.sh status #停止 ./zkServer.sh stop #启动客户端 ./zkCli.sh ls /