举个例子,我想从用户表中根据用户名查找到他的密码,我现在用的方法是填充了DATASET后,用DATAVIEW查找,还有好多的这样的事情,比如删除,我都是手动的在程序中来做的,这样写比较麻烦。
还有一个办法就是直接用SQL语句来查找或者操作数据库,但这样我担心会降低执行速度、还有数据库中的数据安全性,我还是要重新添充DATASET。哪种方法好点?大家给个意见,困扰我好久了。谢!

解决方案 »

  1.   

    SELECT 密码 FROM 用户 WHERE 用户名=@用户名
      

  2.   

    当然是 SQL  语句了, 最好是能把 所有操作在数据库内部完成
      

  3.   

    为了安全性,还是使用存储过程比较好,如果必须使用SQL语句,就一定要是用参数,以防SQL注入。
      

  4.   

    SELECT 密码 FROM 用户 WHERE 用户名=@用户名
      

  5.   

    还是利用SQL本身的功能来提高运算性能好,一来安全二来速度快
      

  6.   

    等一下,我不是很理解大家的意思?
    问题简化一下:用哪种方法在用户密码表中查找用户的密码?为什么?
    1、填充DATASET,建立DATAVIEW,用FIND来查找。
    2、在程序中建立一个SqlCommand,在CommandText中直接使用一句SQL语句,返回一行,再找行中item。
      

  7.   

    要是这样的话,要DATASET还有什么用呢?up,请解释原因?
      

  8.   

    2、在程序中建立一个SqlCommand,在CommandText中直接使用一句SQL语句,返回一行,再找行中item。
    ---------
    用什么返回一行,dataset?这不是和1一样吗!
      

  9.   

    我可以用SqlDataReader来返回一行啊,那样就不用DATASET了,实际第二个方法我的本意是绕过DATASET的。
    我现在用第二个方法写,没有DATASET感觉真别扭啊。
      

  10.   

    private void btnEditReg_Click(object sender, System.EventArgs e)
    {
    string SQL ;
    SQL = "SELECT ID FROM forum_User WHERE LoginNM='{0}' AND LoginPW='{1}'" ;
    SQL = String.Format(SQL, txtLoginNM.Text, txtLoginPW.Text) ;

    object obj = null ;
    OleDbConnection conn = new OleDbConnection(Global.DBConnStr) ;
    OleDbCommand comm = new OleDbCommand(SQL, conn) ;
    conn.Open() ;
    try { obj = comm.ExecuteScalar() ; }
    catch { obj = null ;      }
    finally { conn.Close() ; }

    if ( obj != null )
    {
    Session["LoginID"] = obj.ToString() ;
    Response.Redirect("Navigate.aspx?Tag=UserModify") ;
    }
    else
    {
    this.pnlError.Visible = true ;
    }
    }