当前位置:编程学习 > C#/ASP.NET >>

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
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,