您的位置:首页 > 其它

ADO知识的运用二(Day 28)

2014-12-18 21:13 309 查看
可能是最近有些沉迷于电视剧了,所以,好多天都没写总结了。我知道这样不好,但又老管不住自己,也许是我自控力太差了吧......呵呵,如果在不写总结,可能以后就会成为习惯了。所以今天要赶紧补上......今天就先写一下前几天所学的几个小程序吧。

用户登录程序:

窗体界面:





数据库信息:



主要代码:

首先,要引进命名空间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("登录失败");
}
}


运行结果:





由于时间的关系,今天先写到这里了,明天总结三层架构。加油!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: