C# datagrideview插件的使用
- private void btnLogin_Click(object sender, EventArgs e)
- {
- string txtUserName = this.txtUserName.Text.Trim();
- string txtPwd = this.txtPwd.Text.Trim();
- if (txtUserName==null||txtPwd==null||txtUserName.Length==||txtPwd.Length==)
- {
- MessageBox.Show("您输入的内容为空,请重新输入!");
- }
- string connString = "server=.;database=StudentMISDB;uid=sa;pwd=123456";
- SqlConnection conn = new SqlConnection(connString);
- conn.Open();
- string sql = @"select l.*,DATEDIFF(MI,LoginErrorLastTime,GETDATE()) as 间隔 from login as l where loginname='{0}'";
- sql = string.Format(sql, txtUserName);
- SqlCommand cmd = new SqlCommand(sql,conn);
- SqlDataAdapter adapter = new SqlDataAdapter(cmd);
- DataSet dSet = new DataSet();
- adapter.Fill(dSet);
- conn.Close();
- if (dSet.Tables[].Rows.Count > )
- {
- int errorCount = Convert.ToInt32(dSet.Tables[].Rows[][]);
- int times = Convert.ToInt32(dSet.Tables[].Rows[][]);
- if (errorCount >= && times <= )
- {
- if (dSet.Tables[].Rows[][].ToString() == txtUserName && dSet.Tables[].Rows[][].ToString()==txtPwd)
- {
- MessageBox.Show("登陆成功");
- conn.Open();
- string uptateSql = @"update login set loginerrorcount=0 where id='{0}'";
- uptateSql = string.Format(uptateSql,dSet.Tables[].Rows[][].ToString());
- cmd = new SqlCommand(uptateSql,conn);
- cmd.ExecuteNonQuery();
- conn.Close();
- }
- else
- {
- MessageBox.Show("登录名或者密码错误!");
- conn.Open();
- string updateSql = @"update login set loginerrorcount=loginerrorcount+1 ,loginerrorlasttime=getdate() where id='{0}'";
- updateSql = string.Format(updateSql,dSet.Tables[].Rows[][].ToString());
- cmd = new SqlCommand(updateSql,conn);
- cmd.ExecuteNonQuery();
- conn.Close();
- }
- }
- else
- {
- MessageBox.Show("请在"+(-times)+"分钟后登录!");
- }
- }
- else
- {
- MessageBox.Show("用户不存在!");
- }
- }
- }
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- using System.Data.SqlClient;
- namespace ADO.NET8._30
- {
- public partial class DataGridView : Form
- {
- public DataGridView()
- {
- InitializeComponent();
- }
- private void DataGridView_Load(object sender, EventArgs e)
- {
- //加载学生选课信息
- loadStudntData();
- //加载课程信息(没有选的课程)
- LoadCourse();
- }
- /// <summary>
- /// 自定义一个方法
- /// </summary>
- private void LoadCourse()
- {
- //1.创建数据库连接符
- string connString = "server=.;database=StudentMISDB;uid=sa;pwd=123456";
- //2.链接数据库
- SqlConnection conn = new SqlConnection(connString);
- //3.添加数据库要执行的语句,通过ID查找没有选择到的课程
- string sql = @"select * from Course where CourseId not in(select distinct sc.CourseId from [dbo].[Students] as s
- join Score as sc on s.StudentId=sc.StudentId
- join Course as c on sc.CourseId = c.CourseId
- where s.StudentId='2')";
- //4.创建命令
- SqlCommand cmd = new SqlCommand(sql, conn);
- //5.断开式连接查询
- SqlDataAdapter da = new SqlDataAdapter(cmd);
- //6.创建数据缓冲区(数据集)
- DataSet ds = new DataSet();
- conn.Open();
- //7.填充数据集
- da.Fill(ds);
- conn.Close();
- //8.绑定数据源
- this.cmbCourseName.DataSource = ds.Tables[];
- //9.设置combobox控件中要显示的列
- //this.cmboxCourse.DisplayMember = "列名";
- this.cmbCourseName.DisplayMember = "Name";
- //10.DisplayMember绑定需要显示的数据表字段,而ValueMember绑定需要获取选择的项的值;直接可见的是此item的 DisplayMember 对应内容,而此 item的值是ValueMember 的对应内容。
- this.cmbCourseName.ValueMember = "CourseId";
- }
- /// <summary>
- /// 获取选中的值
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void cmbCourseName_SelectedIndexChanged(object sender, EventArgs e)
- {
- string courseID = this.cmbCourseName.SelectedValue.ToString();
- ///string courseName = this.cmboxCourse.SelectedText;
- }
- /// <summary>
- /// 保存 选课后,
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void btnSave_Click(object sender, EventArgs e)
- {
- //获取到在combobox控件中已经选择的值
- string courseID = this.cmbCourseName.SelectedValue.ToString();
- //string courseName = this.cmboxCourse.SelectedText;
- int studentId = ;
- //1.
- string connString = "server=.;database=StudentMISDB;uid=sa;pwd=123456";
- SqlConnection conn = new SqlConnection(connString);
- string sql = "insert into Score values('{0}','{1}','{2}')";
- sql = string.Format(sql, studentId, courseID, );
- SqlCommand cmd = new SqlCommand(sql, conn);
- conn.Open();
- int result = cmd.ExecuteNonQuery();
- conn.Close();
- if (result > )
- {
- MessageBox.Show("保存成功");
- loadStudntData();
- LoadCourse();
- }
- else
- {
- MessageBox.Show("保存失败");
- }
- }
- /// <summary>
- /// 加载学生选课信息
- /// </summary>
- private void loadStudntData()
- {
- string connString = "server=.;database=StudentMISDB;uid=sa;pwd=123456";
- SqlConnection conn = new SqlConnection(connString);
- string sql = @"select s.Studentid,c.courseId, s.Name as 姓名,c.Name as 课程名, sc.Score as 成绩 from [dbo].[Students] as s
- join Score as sc on s.StudentId=sc.StudentId
- join Course as c on sc.CourseId = c.CourseId
- where s.StudentId='{0}'";
- sql = string.Format(sql, );
- SqlCommand cmd = new SqlCommand(sql, conn);
- SqlDataAdapter da = new SqlDataAdapter(cmd);
- DataSet ds = new DataSet();
- conn.Open();
- da.Fill(ds);
- conn.Close();
- this.dataGridView1.DataSource = ds;
- this.dataGridView1.DataMember = ds.Tables[].TableName;
- }
- }
- }
二、(1)封装的类:
- using System;
- using System.Collections.Generic;
- using System.Data.SqlClient;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Data;
- namespace Demo2
- {
- public static class SqlCommon
- {
- /// <summary>
- /// 连接字符串
- /// </summary>
- public static string connString = "server=.;database=StudentMISDB;uid=sa;pwd=123456";
- /// <summary>
- /// 执行增删改操作
- /// </summary>
- /// <param name="sql">sql语句 参数传入</param>
- /// <returns></returns>
- public static int ExecuteSql(string sql)
- {
- int result = ;
- //创建连接对象new SqlConnection( 连接字符串)
- SqlConnection conn = new SqlConnection(connString);
- //创建命令对象 new SqlCommand(sql语句, conn)
- SqlCommand cmd = new SqlCommand(sql, conn);
- // 打开数据连接
- conn.Open();
- // 执行 sql 命令,返回受影响的行数
- result = cmd.ExecuteNonQuery();
- // 关闭数据连接
- conn.Close();
- // 把执行结果【受影响的行数】,返回给调用者
- return result;
- }
- public static DataSet ExecuteQuery(string sql) {
- SqlConnection conn = new SqlConnection(connString);
- SqlCommand cmd = new SqlCommand(sql, conn);
- SqlDataAdapter da = new SqlDataAdapter(cmd);
- DataSet ds = new DataSet();
- conn.Open();
- da.Fill(ds);
- conn.Close();
- return ds;
- }
- }
- }
(二)、调用类
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- using System.Data.SqlClient;
- namespace Demo2
- {
- public partial class Form1 : Form
- {
- public Form1()
- {
- InitializeComponent();
- }
- private void btnAdd_Click(object sender, EventArgs e)
- {
- /// 定义变量接收 用户输入的值
- string loginName = this.txtLoginName.Text.Trim();
- string pwd = this.txtPWD.Text.Trim();
- ///判断用户是否有输入值
- if (loginName == "" || loginName == null)
- {
- MessageBox.Show("请输入用户名");
- return;
- }
- //string.IsNullOrEmpty(字符串) ==>判断字符串是否为“空字符”或为 null
- if (string.IsNullOrEmpty(pwd))
- {
- MessageBox.Show("请输入密码");
- return;
- }
- if (isExistsLoginName(loginName))
- {
- MessageBox.Show("该用户名已经存在,请重新输入");
- this.txtLoginName.Text = string.Empty;
- this.txtPWD.Text = string.Empty;
- return;
- }
- string sql = @"insert into LoginInfo (loginName,pwd,LoginErrorLastTime)
- values('{0}','{1}','{2}')";
- sql = string.Format(sql, loginName, pwd, DateTime.Now.ToString());
- int row = SqlCommon.ExecuteSql(sql);
- if (row > )
- {
- MessageBox.Show("添加成功");
- }
- else
- {
- MessageBox.Show("添加失败");
- }
- }
- #region 判断 用户名是否存在
- private bool isExistsLoginName(string loginName)
- {
- string sql = @"select * from LoginInfo where LoginName='{0}'";
- sql = string.Format(sql, loginName);
- DataSet ds = SqlCommon.ExecuteQuery(sql);
- return ds.Tables[].Rows.Count > ;
- }
- #endregion
- }
- }
(三)、datagrideview插件
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- namespace Demo2
- {
- public partial class FrmScore : Form
- {
- public FrmScore()
- {
- InitializeComponent();
- }
- private void btnSelect_Click(object sender, EventArgs e)
- {
- string name = this.txtCourse.Text.Trim();
- string sql = @"select ScoreId,Name,Score from Course as c
- join Score as sc on c.CourseId = sc.CourseId
- where sc.StudentId='1' and c.Name like '%{0}%'";
- sql = string.Format(sql,name);
- DataSet ds = SqlCommon.ExecuteQuery(sql);
- this.dataGridView1.DataSource = ds.Tables[];
- }
- }
- }
C# datagrideview插件的使用的更多相关文章
- Angular杂谈系列1-如何在Angular2中使用jQuery及其插件
jQuery,让我们对dom的操作更加便捷.由于其易用性和可扩展性,jQuer也迅速风靡全球,各种插件也是目不暇接. 我相信很多人并不能直接远离jQuery去做前端,因为它太好用了,我们以前做的东西大 ...
- Jenkins 安装的HTML Publisher Plugin 插件无法展示ant生成的JunitReport报告
最近在做基于jenkins ant junit 的测试持续集成,单独ant junit生成的junitreport报告打开正常,使用Jenkins的HTML Publisher Plugin 插件无 ...
- 常用 Gulp 插件汇总 —— 基于 Gulp 的前端集成解决方案(三)
前两篇文章讨论了 Gulp 的安装部署及基本概念,借助于 Gulp 强大的 插件生态 可以完成很多常见的和不常见的任务.本文主要汇总常用的 Gulp 插件及其基本使用,需要读者对 Gulp 有一个基本 ...
- solr服务中集成IKAnalyzer中文分词器、集成dataimportHandler插件
昨天已经在Tomcat容器中成功的部署了solr全文检索引擎系统的服务:今天来分享一下solr服务在海量数据的网站中是如何实现数据的检索. 在solr服务中集成IKAnalyzer中文分词器的步骤: ...
- 使用Visual Studio SDK制作GLSL词法着色插件
使用Visual Studio SDK制作GLSL词法着色插件 我们在Visual Studio上开发OpenGL ES项目时,避免不了写Shader.这时在vs里直接编辑shader就会显得很方便. ...
- 工欲善其事,必先利其器 之 VS2013全攻略(安装,技巧,快捷键,插件)!
如有需要WPF工具的朋友可以移步 工欲善其事,必先利其器 之 WPF篇: 随着开发轨迹来看高效WPF开发的工具和技巧 之前一篇<c++的性能, c#的产能?!鱼和熊掌可以兼得,.NET NATI ...
- Jquery mobiscroll 移动设备(手机)wap日期时间选择插件以及滑动、滚动插件
Jquery Mobiscroll是一个用于触摸设备(Android phones, iPhone, iPad, Galaxy Tab)的日期和时间选择器jQuery插件.以及各种滑动插件 可以让用户 ...
- 10个最好用的HTML/CSS 工具、插件和资料库
大家在使用HTML/CSS开发项目的过程中,有使用过哪些工具,插件和库?下面介绍的10种HTML/CSS工具,插件和资料库,是国外程序员经常用到的. Firebug Lite FirebugLite ...
- 在Sublime Text 3上安装代码格式化插件CodeFormatter
1.了解CodeFormatter插件 在Sublime Text 3中编写代码,为了能让我们的代码格式变得漂亮整洁,需要一个能自动格式代码的插件.这里发现CodeFormatter插件不错,它能支持 ...
随机推荐
- Android Studio签名打包应用
转载请注明来源: http://blog.csdn.net/kjunchen/article/details/50812391 可直接看看以下的Android Studio中签名应用 Android要 ...
- MySql command line client 命令系列
—————————————————————————————————————————————————————————— 一.启动与退出 1.进入MySQL:启动MySQL Command Line Cl ...
- Objective-C语言的 if ( self = [super init] )
我们先假设如今自己创建了个类.我们起名叫MyObject,继承于NSObject. 继承知道吧,就是你这个子类(MyObject)假设什么都不写的话,和父类(NSObject)就是一模一样的. OC里 ...
- Guava ---- EventBus事件驱动模型
在软件开发过程中, 难免有信息的共享或者对象间的协作. 怎样让对象间信息共享高效, 而且耦合性低. 这是一个难题. 而耦合性高将带来编码改动牵一发而动全身的连锁效应. Spring的风靡正是由于攻克了 ...
- [办公自动化]excel工作簿内的表无法删除,单击右键无删除键
今天同事问,我自己的工作簿,没有设置保护,但是就是无法删除其中的工作表. 后来发现,她的excel工作簿打开的文件名后面显示[共享]. 原因找到了. 取消共享就可以了.
- Delphi中WebBrowser控件打开部分网站报"Invalid floating point operation”解决
Delphi中WebBrowser控件打开部分网站报"Invalid floating point operation”解决 EmbeddedWBWebBrowserDelphi 最近用E ...
- ARM+llinux系统移植3G拨号上网收发短信(二)【转】
本文转载自:http://blog.csdn.net/hanmengaidudu/article/details/17099749 一.发送text格式的短信 给联通发text格式的短信: ~ > ...
- spark groupByKey().mapValues
>>> rdd = sc.parallelize([("bone", 231), ("bone", 21213), ("jack&q ...
- luogu 1080 国王游戏
题目大意: 有一些数对,每个数对的得分为它之前所有数对的左侧数之乘积除以它的右侧数 求重新排列后数列中所有数对中最大得分尽可能小(第一个数对不参与排序,仍然为第一个) 思路: 非常简单,可以根据它对后 ...
- BZOJ_3171_[Tjoi2013]循环格_最小费用最大流
BZOJ_3171_[Tjoi2013]循环格_最小费用最大流 Description 一个循环格就是一个矩阵,其中所有元素为箭头,指向相邻四个格子.每个元素有一个坐标(行,列),其中左上角元素坐标为 ...