asp.net关于comandtext属性的问题,跪求各路大神!!!
·以下是我写的一段一个登陆界面的后台代码,我想知道我在俩个if里面分别定义commandtext属性的值,这种用法对么?有什么弊端没!!自己尝试出来的,求大神给点经验!!谢谢!using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.OleDb;
public partial class login : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
OleDbConnection odconn = new OleDbConnection(@"Provider = Microsoft.Jet.OleDB.4.0;Data Source = " + MapPath("App_Data/学生在线考试系统.mdb") + ";");
odconn.Open();
OleDbCommand odcmd = new OleDbCommand();
odcmd.Connection = odconn;
if (TextBox1.Text != "" || TextBox2.Text != "") {
string s1 = TextBox1.Text;
string s2 = TextBox2.Text;
if (ddl1.SelectedValue == "学生"){
odcmd.CommandText = "select * from tbStudent";//这里查询了tbstudent
OleDbDataReader oddr = odcmd.ExecuteReader();
while (oddr.Read()) {
string s3 = oddr["StuID"].ToString();
string s4 = oddr["StuPwd"].ToString();
string s5 = oddr["StuName"].ToString();
if (s1.Equals(s3) && s2.Equals(s4))
{
Response.Redirect("Student/StartExam.aspx");
}
else {
continue;
}
}
oddr.Close();
}
else if (ddl1.SelectedValue == "教师")
{
odcmd.CommandText = "select * from tbTeacher";//这里用同一个command对象查询了tbteacher表
OleDbDataReader oddr = odcmd.ExecuteReader();
while (oddr.Read())
{
string s3 = oddr["TeacherID"].ToString();
string s4 = oddr["TeacherPwd"].ToString();
string s5 = oddr["TeacherName"].ToString();
string s6 = oddr["Course"].ToString();
string s7 = oddr["TeacherSex"].ToString();
if (s1.Equals(s3) && s2.Equals(s4))
{
Session["usrname"] = s5;
Session["usrid"] = s3;
Session["usrcourse"] = s6;
Session["usrsex"] = s7;
Response.Redirect("Teacher/TeacherLogin.aspx");
}
else
{
continue;
}
}
oddr.Close();
}
}
}
}
--------------------编程问答-------------------- 这样做只能说当练习题,没有什么错误.但实际上做开发不会这样做,要用面向对象编程,即OO,建立好数据与类之间的映射关系.查询得到结果后是返回一个List<T>,再用List<T>绑定到datagridview或repeater都可以
还有,访问数据库一般有一个专门的类DBhepler,这个类一般都包含所有访问数据库的方法 --------------------编程问答-------------------- 没有弊端。分开用还是用一个其实没有区别。 --------------------编程问答-------------------- if else ,这两次CommandText不会冲突
但
1.odconn最后没有close
2.只是身份验证,没必要select * from tbStudent返回一个表,建议
"select StuName from tbTeacher where StuID='" + s1+ "'and StuPwd='" + s2+ "'"; --------------------编程问答-------------------- 谢谢大家!!我们就是要交个作业,学生在线考试系统,这是首页!看了好几次书上的那个ado.net自己试出来的!也没考虑有什么问题!
补充:.NET技术 , ASP.NET