using System;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.IO;namespace _8登陆练习操作
{public partial class Form1 : Form{public Form1(){InitializeComponent();}private void SetErrorTimes(){using (SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=E:\MyProjects\C#net传智播客\第五季ADO.NET\8登陆练习操作\8登陆练习操作\Database1.mdf;Integrated Security=True;User Instance=True")){conn.Open();using (SqlCommand upComd = conn.CreateCommand()){upComd.CommandText = "update T_User set ErrorTimes = ErrorTimes + 1 WHERE UserName=@UserName";upComd.Parameters.Add(new SqlParameter("UserName", UserName.Text));upComd.ExecuteNonQuery();}}}private void ResetErrorTimes(){using (SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=E:\MyProjects\C#net传智播客\第五季ADO.NET\8登陆练习操作\8登陆练习操作\Database1.mdf;Integrated Security=True;User Instance=True")){conn.Open();using (SqlCommand updateCmd = conn.CreateCommand()){updateCmd.CommandText = "update T_User set ErrorTimes = 0 WHERE UserName=@UserName";updateCmd.Parameters.Add(new SqlParameter("UserName", UserName.Text));updateCmd.ExecuteNonQuery();}}}private void button1_Click(object sender, EventArgs e){using (SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=E:\MyProjects\C#net传智播客\第五季ADO.NET\8登陆练习操作\8登陆练习操作\Database1.mdf;Integrated Security=True;User Instance=True")){conn.Open();using (SqlCommand cmd = conn.CreateCommand()) {cmd.CommandText = "Select * FROM T_User WHERE UserName=@UserName";cmd.Parameters.Add(new SqlParameter("UserName", UserName.Text));using (SqlDataReader reader = cmd.ExecuteReader()) {if (reader.Read()){int errotTimes = reader.GetInt32(reader.GetOrdinal("ErrorTimes"));if (errotTimes >= 3){//Console.WriteLine("对不起用户已经被锁定!");MessageBox.Show("对不起用户已经被锁定!");}else{string passwd = Password.Text;string t_passwd =reader.GetString(reader.GetOrdinal("Password"));if (passwd == t_passwd){//清空一下ErrorTimes//这里还没有其它的办法,只能另外写一个函数用于来更新ErrorTimes的值/*cmd.Parameters.Clear();cmd.CommandText = "update T_User set ErrorTimes = 0 WERE UserName=@UserName";cmd.Parameters.Add(new SqlParameter("UserName", UserName.Text));cmd.ExecuteNonQuery();* */ResetErrorTimes();MessageBox.Show("登陆成功!");//Console.WriteLine("登陆成功!");}else {//添加ErrorTimes/*cmd.Parameters.Clear(); //这里选清空一下Parameterscmd.CommandText = "update T_User set ErrorTimes = ErrorTimes + 1 WHERE UserName=@UserName";cmd.Parameters.Add(new SqlParameter("UserName",UserName.Text));cmd.ExecuteNonQuery();*///在同一个连接中,如果SqlDataReader没关闭,那么是不能执行Update之类的语句的SetErrorTimes();MessageBox.Show("密码错误!");//Console.WriteLine("密码错误!");}}}else {//Console.WriteLine("用户名不存在!");MessageBox.Show("用户名不存在!");}}}}}//文件导入private void button2_Click(object sender, EventArgs e){//当点击弹出窗口,然后点击了确定if (openFileDialog1.ShowDialog() == DialogResult.OK) {//取得文件流using (FileStream fileStream = File.OpenRead(openFileDialog1.FileName)) {//读取文件using (StreamReader streamReader = new StreamReader(fileStream)) {string line = null;while ((line = streamReader.ReadLine()) != null) {string[] str = line.Split('|');string name = str[0];string passwd = str[1];int errorTimes = Convert.ToInt32(str[2]);using (SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=E:\MyProjects\C#net传智播客\第五季ADO.NET\8登陆练习操作\8登陆练习操作\Database1.mdf;Integrated Security=True;User Instance=True")){conn.Open();using (SqlCommand cmd = conn.CreateCommand()){//MessageBox.Show("name:"+name+",passwd:"+passwd+",errorTimes:"+errorTimes+"");//在这里测试了一会儿,唉,自己不小心,把变量给写错了,看来以后还要多加小心才行cmd.CommandText = "Insert into T_User(UserName, Password, ErrorTimes) values(@username,@password,@errortimes) ";cmd.Parameters.Add(new SqlParameter("username", name));cmd.Parameters.Add(new SqlParameter("password", passwd));cmd.Parameters.Add(new SqlParameter("errortimes", errorTimes));cmd.ExecuteNonQuery();}                            }}}}}MessageBox.Show("导入成功!");}//文件导出private void button3_Click(object sender, EventArgs e){using (SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=E:\MyProjects\C#net传智播客\第五季ADO.NET\8登陆练习操作\8登陆练习操作\Database1.mdf;Integrated Security=True;User Instance=True")){conn.Open();using (SqlCommand cmd = conn.CreateCommand()){cmd.CommandText = "select * FROM T_User";//读取多行数据using (SqlDataReader reader = cmd.ExecuteReader()){StreamWriter sw = File.CreateText(@"c:\2.txt");while (reader.Read()) //循环数据{long id = reader.GetInt64(reader.GetOrdinal("Id"));string name = reader.GetString(reader.GetOrdinal("UserName"));string passwd = reader.GetString(reader.GetOrdinal("Password"));int errortimes = reader.GetInt32(reader.GetOrdinal("ErrorTimes"));sw.WriteLine("{0}|{1}|{2}|{3}",id,name,passwd,errortimes);//MessageBox.Show("id:" + id + ",name:" + name + ",passwd:" + passwd + ",errortimes:" + errortimes);}sw.Close();}}}MessageBox.Show("导出数据成功!");}/*省市选择程序,数据全部来自于数据库:http://www.programfan.com/blog/article.asp?id=28128* 把createtable中的varchar改为nvarchar,在insert语句的汉字前面加上N(查找","替换为".N")我不做好像也没事* ComboBox的显示值,Items.Add的参数是Object类型,也就是可以放任意数据类型的数据* 可以设置DisplayMember属性设定显示的属性,通过SelectItem属性取得到就是选择的条目对应的对像,例子* 疑问: 取出来的是Object,怎么能转换为对应的类型?变量名只是"标签".显示的值和实际的对像不一样,在ASP.Net中也有相同的东西* 创建一个ProvinceItem类,将数据填充在这个对像中添加到ComBoBox中* **/private void Form1_Load(object sender, EventArgs e){//MessageBox.Show("一进入就开始加载省份信息!");//设定comboBox的DisplayMember属性为name,就会显示对像的Name属性的值/*cb_city.DisplayMember = "Name";ProvinceItem item = new ProvinceItem();item.Id = 1;item.Name = "北京";cb_city.Items.Add(item);ProvinceItem item2 = new ProvinceItem();item2.Id = 2;item2.Name = "上海";cb_city.Items.Add(item2);*/using (SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=E:\MyProjects\C#net传智播客\第五季ADO.NET\8登陆练习操作\8登陆练习操作\Database1.mdf;Integrated Security=True;User Instance=True")){conn.Open();using (SqlCommand cmd = conn.CreateCommand()) {cmd.CommandText = "select * FROM promary ";cb_city.DisplayMember = "Name";using (SqlDataReader reader = cmd.ExecuteReader()) {while (reader.Read()) {int proid = reader.GetInt32(reader.GetOrdinal("proID"));string proName = reader.GetString(reader.GetOrdinal("proName"));ProvinceItem item = new ProvinceItem();item.Id = proid;item.Name = proName;cb_city.Items.Add(item);}}}}}private void cb_city_SelectedIndexChanged(object sender, EventArgs e){/*string text = cb_city.SelectedText;int index = cb_city.SelectedIndex;//string value = cb_city.SelectedValue;string item = cb_city.SelectedItem.ToString();MessageBox.Show("item=" + item);*/ProvinceItem item = (ProvinceItem)cb_city.SelectedItem;int proId = item.Id;string name = item.Name;//MessageBox.Show("proId:"+proId+",name:"+name);using (SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=E:\MyProjects\C#net传智播客\第五季ADO.NET\8登陆练习操作\8登陆练习操作\Database1.mdf;Integrated Security=True;User Instance=True")){conn.Open();using (SqlCommand cmd = conn.CreateCommand()) {cmd.CommandText = "select * FROM city WHERE proID="+proId;using (SqlDataReader reader = cmd.ExecuteReader()) {cb_city_small.Items.Clear();cb_city_small.SelectedIndex = -1;cb_city_small.DisplayMember = "Name";while (reader.Read()) {ProvinceItem city = new ProvinceItem();int cityID = reader.GetInt32(reader.GetOrdinal("cityID"));string cityName = reader.GetString(reader.GetOrdinal("cityName"));city.Id = cityID;city.Name = cityName;cb_city_small.Items.Add(city);}}}}}}class ProvinceItem {public string Name { get; set; }public int Id { get; set; }}
}

  

第五节 8登陆练习操作相关推荐

  1. {Django基础九之中间件} 一 前戏 二 中间件介绍 三 自定义中间件 四 中间件的执行流程 五 中间件版登陆认证...

    Django基础九之中间件 本节目录 一 前戏 二 中间件介绍 三 自定义中间件 四 中间件的执行流程 五 中间件版登陆认证 六 xxx 七 xxx 八 xxx 一 前戏 我们在前面的课程中已经学会了 ...

  2. 五节课从零起步(无需数学和Python基础)编码实现AI人工智能框架电子书V1

    五节课从零起步  (无需数学和Python 基础)  编码实现AI 人工智能框架          王  家  林        2018/4/15                          ...

  3. 【java】兴唐课程第五节到第九节知识点总结

    第九节 1. 代码:void readBook(String- bookNames) 表示不确定参数的个数,此时变量为一个数组. 2.当方法中的参数名称(如stuname)和属性名称相同时. this ...

  4. 【Python基础知识-pycharm版】第五节-字典\集合

    第五节-字典\集合\控制语句 字典 字典的创建 字典元素的访问 字典元素添加.修改.删除 序列解包 表格数据使用字典和列表存储,并实现访问 字典核心底层原理(重要) 集合 集合相关操作 字典 字典是& ...

  5. Kotlin学习笔记 第二章 类与对象 第五节 可见性 第六节 扩展

    参考链接 Kotlin官方文档 https://kotlinlang.org/docs/home.html 中文网站 https://www.kotlincn.net/docs/reference/p ...

  6. 第五节 系统调用的三个层次(下) ——20135203齐岳

    第五节 系统调用的三个层次(下) By 20135203齐岳 本周的课程主要内容有三点: 在MenuOS中通过添加代码增加自定义的系统调用命令 使用gdb跟踪调试内核 简单分析system_call代 ...

  7. 探讨Vue 数据监测原理-第五节-展开介绍 Vue中监测-【数组】数据的原理

    文章目录 探讨一下Vue 数据监测的原理 本次探讨共的第五个章节 第五节:展开介绍 Vue中监测-[数组]数据的原理 1. 案例 1.1. 页面案例 2. 数组形式|对象形式爱好的区别 2.1. 页面 ...

  8. 车站计算机系统具有自诊断功能,第五节自动检售票系统.ppt

    第五节自动检售票系统 第五节 自动检售票系统 第五节 自动检售票系统 一﹑票制及票务管理 1.票制 2.票务管理 二﹑系统组成及功能 1.中央计算机系统 2.车站计算机系统 3.AFC终端设备 票 制 ...

  9. [基于STM32底盘控制与ROS上层导航小车制作] 第五节 实现STM32与ubuntu系统下的ROS串口DMA通信,传输底盘速度等信息

    系列文章目录 第一节 stm32电机驱动与编码器读取反馈 第二节 stm32电机pid控制 第三节 stm32线速度标定 第四节 stm32添加mpu6050得到angle角度 第五节 实现STM32 ...

最新文章

  1. DeepFashion: Powering Robust Clothes Recognition and Retrieval with Rich Annotations – CVPR 2016
  2. jQuery美化select下拉框
  3. qpushbutton设置居中_Qt QGridLayout自动将项目居中(移动)到中间。
  4. oracle多线程类连接数,数据库连接数,服务器进程,线程之间什么关系?
  5. Android IOS WebRTC 音视频开发总结(七九)-- WebRTC选择H.264的四大理由
  6. Golang——垃圾回收GC(2)
  7. windows10系统右键新建菜单的自定义
  8. 开源下载 | 基于Scikit-learn、Keras和TensorFlow的机器学习实战
  9. java分布式开发流程,面试建议
  10. 经典6位半HP34401A电路图
  11. mysql 触发器 instead of_AFTER触发器与INSTEAD OF触发器
  12. 百度搜索下拉框及百度相关搜索中刷关键字方法
  13. 医疗险十大常见误区,你中了几个?
  14. Unity的协程详解
  15. 如何下载深圳市劳动和社会保障业务网上服务大厅养老保险及医疗保险详单
  16. strcpy()、strncpy()、strlcpy()、strncpy_s()函数
  17. Python基础课程-面向对象编程
  18. BindingException: Mapper method ‘com.itheima.dao.BookDao.update‘ has an un unsupported return
  19. matlab脑电信号特征提取,脑电信号特征提取方法研究
  20. horspool算法C语言代码,sfa3

热门文章

  1. css sprint 生成工具 bg2css
  2. 网易严选高段位的“超级用户”数据运营法则
  3. 一款让你“乐词不疲”的背单词神器
  4. 薪资涨幅60%,直通一线互联网公司的秘密......
  5. PMCAFF|产品经理必须懂得的五大心理学分支
  6. Java Web学习总结(6)——通过Servlet生成验证码图片
  7. Node 10 新功能概览(译)
  8. Linux安装Gradle
  9. 小试牛刀chrome来调试APP
  10. 优达学城数据分析师纳米学位——P3项目知识点整理及代码分析 xml文件解析