首页 > 代码库 > ADO知识的运用二(Day 28)
ADO知识的运用二(Day 28)
可能是最近有些沉迷于电视剧了,所以,好多天都没写总结了。我知道这样不好,但又老管不住自己,也许是我自控力太差了吧......呵呵,如果在不写总结,可能以后就会成为习惯了。所以今天要赶紧补上......今天就先写一下前几天所学的几个小程序吧。
用户登录程序:
窗体界面:
数据库信息:
主要代码:
首先,要引进命名空间using System.Data.SqlClient;
private void btnok_Click(object sender, EventArgs e) //登录按钮的事件 { string user = this.txtname.Text; string pwd = this.txtpwd.Text; //创建连接字符串 string connstr = "Data Source=.;Initial Catalog=db_buiness;Integrated Security=True"; //打开连接 using (SqlConnection conn = new SqlConnection(connstr)) { conn.Open(); //执行数据库操作 (向SqlCommand的Parameters中添加参数) string sqltext = "select * from info where name=@user and pwd=@pwd"; SqlParameter sp = new SqlParameter("@user", user); SqlParameter sp1 = new SqlParameter("@pwd", pwd); using (SqlCommand cmd = new SqlCommand(sqltext, conn)) { cmd.Parameters.Add(sp); cmd.Parameters.Add(sp1); DataTable dt = new DataTable(); //定义一个DateTable类型来存放数据 using (SqlDataAdapter sda = new SqlDataAdapter(cmd))//创建数据适配器 { sda.Fill(dt); //填充数据 } if (dt.Rows.Count > 0) { MessageBox.Show("登陆成功"); } else { MessageBox.Show("登录失败"); } } } } private void btnclo_Click(object sender, EventArgs e) { this.txtname.Text= ""; this.txtpwd.Text = ""; }
运行结果:
由于每次在对数据库中的表进行操作时,总要去连接数据库,和调用一些SqlCommand的方法。所以,我们可以把这些定义成一个类SqlHelper(里面的方法为静态方法),在用的时候直接调用就行。例如上面的那个用户登录,我们可以用这种方法写。
SqlHelper类
class SqlHelper { //连接数据库 static string constr = "Data Source=.;Initial Catalog=db_buiness;Integrated Security=True"; // SqlCommand对象的主要方法 //ExecuteNonQuery用于执行SQL语句,并返回SQL语句所影响的行数,一般用于执行Insert、Delete、Update等命令 public static int ExecuteNonQuery (string sqltext,params SqlParameter[]parms) { using (SqlConnection conn = new SqlConnection(constr)) { conn.Open(); using (SqlCommand comm =new SqlCommand ()) { comm.CommandText = sqltext; comm.Connection = conn; comm.Parameters.AddRange(parms); return comm.ExecuteNonQuery(); //返回受影响的行数 } } }
//ExecuteScalre方法用于执行查询语句,但返回的是首行首列,该方法只适用于只有一个结果的查询,如可以在使用Sum,Avg,Max,Min等函数的SQL语句 public static int ExecuteScalre(string sqltext, params SqlParameter[] parms) { using (SqlConnection conn=new SqlConnection (constr)) { conn.Open(); using (SqlCommand comm= new SqlCommand ()) { comm.Connection = conn; comm.CommandText = sqltext; comm.Parameters.AddRange(parms); return (int)comm.ExecuteScalar(); //返回首行首列 } } }
public static DataTable ExecuteDataTable (string sqltext,params SqlParameter[]parms) { using (SqlConnection conn=new SqlConnection (constr)) { conn.Open(); using (SqlCommand comm=new SqlCommand ()) { comm.Connection = conn; comm.CommandText = sqltext; comm.Parameters.AddRange(parms); DataTable dt = new DataTable(); //创建一个临时容器 using (SqlDataAdapter sda=new SqlDataAdapter(comm)) { sda.Fill(dt); } return dt; } } }
// ExecuteReader用于执行查询语句,返回的是一个DataReader类型的集合 public static SqlDataReader ExecuteSqlDataReader(string sqltext,params SqlParameter[]parms) { using (SqlConnection conn=new SqlConnection (constr)) { conn.Open(); using (SqlCommand comm=new SqlCommand (sqltext,conn)) { comm.Parameters.AddRange(parms); using (SqlDataReader da= comm.ExecuteReader(CommandBehavior.CloseConnection)) //关闭连接 { return da; } } } }
在登录btton按钮事件下直接调用
private void btnlogin_Click(object sender, EventArgs e) { //首先得到用户输入的用户名和密码 string name = this.txtname.Text.Trim(); string pwd = this.txtpwd.Text.Trim();
string sqltext = "select count(*) from student where uname=@uname and upwd=@upwd"; SqlParameter[] parms = { new SqlParameter("@uname",name), new SqlParameter ("upwd",pwd) }; if (SqlHelper.ExecuteScalre(sqltext, parms) > 0) //调用SqlHelper的ExecuteScalre方法 { MessageBox.Show("登陆成功"); } else { MessageBox.Show("登录失败"); } }
运行结果:
由于时间的关系,今天先写到这里了,明天总结三层架构。加油!
ADO知识的运用二(Day 28)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。