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插件不错,它能支持 ...
随机推荐
- IDM百度云使用
2018-8-6 (idm百度云速度很慢) Tips:如果感觉图片较小,可以ctrl+鼠标滚轮放大网页 首先下载IDM绿色版. 解压后:右键以管理员权限运行进行绿化 最后,它会在所有支持的浏览器上安装 ...
- IOS-Storyboard控制器切换之Modal(1)
Modal模式是指模态切换.新开的界面会挡住之前的界面,使之不能获取焦点. 创建一个singleView模板的程序,打开storyboard文件.拖动2个UIViewController到界面中.按住 ...
- linux设备驱动归纳总结(八):2.match.probe.remove
linux设备驱动归纳总结(八):2.总线.设备和驱动的关系 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ...
- 【C/C++多线程编程之五】pthread线程深入理解
多线程编程之pthread线程深入理解 Pthread是 POSIX threads 的简称,是POSIX的线程标准. 前几篇博客已经能给你初步的多线程概念.在进一步学 ...
- TCP/IP具体解释学习笔记——数据链路层(2)
五 Wireless LANs(Wi-Fi) 现在很流行的一种接入互联网的方式就是Wi-Fi了.我们用的ipad.手机.笔记本电脑等等都能够用这样的方式接入互联网,很方便灵活.一个典型的Wi-Fi网络 ...
- react 引入 百度地图API
使用 Echarts 的地图的时候,发现报错,说 Bmap api is not loaded 百度地图API没有加载 乍一想,Echarts 用的也是 百度地图 啊,没有引入百度地图,还用个啥,当然 ...
- STM32学习之路-感觉自己走到了一个天大的坑里了!
先前兴致勃勃的来弄16位并口驱动LCD.本以为就须要改下LCD IC的初始化即可了,没想到弄了这么多天最终发现自己走进了一个深坑了 T T 原因是我的开发板是奋斗V5的, 它确实有MCU外扩IO口, ...
- HNOI模拟 Day3.25 By Yqc
怕老婆 [问题描述] 有一天hzy9819,来到了一座大城市拥有了属于他自己的一双滑板鞋.但是他还是不满足想要拥有属于自己的一栋楼,他来到了一条宽敞的大道上,一个一个记录着这些楼的层数以方便自己选择. ...
- 危险的kill
. ps -aux | grep -E "chk.*url.*py" | cut -c 10-15 | xargs kill -9 ps -x | grep -E "ch ...
- HTTP要点概述:十一,HTTP状态码
一,状态码: 状态码告知从服务器返回的请求结果.用户借助状态码可以判断服务器是正常处理了请求,还是发生了错误. 状态码比如200 OK,以3位数字和原因短语组成. 数字中的第一位制定了相应的类别,后两 ...