日期:2014-05-17  浏览次数:20508 次

关于 SqlParameter
一个登陆页面,数据库是oracle,用SqlParameter传参的方式(在oracle里 := @)
C# code

OracleConnection conn = new OracleConnection(ConnectionString);
            string sql = "select * from table_user where name=:name and pwd=:pwd";
            OracleCommand cmd = new OracleCommand(sql, conn);

            OracleParameter name = new OracleParameter(":name", OracleType.Char, 50);
            name.Value = TextBox1.Text;
            cmd.Parameters.Add(name);

            OracleParameter pwd = new OracleParameter(":pwd", OracleType.Char, 50);
            pwd.Value = TextBox2.Text;
            cmd.Parameters.Add(pwd);

            conn.Open();
            OracleDataReader dr = cmd.ExecuteReader();
            if (dr.HasRows)
            {
                if (判断账号是否被禁用)//怎样得到这一列的值
                {
                    Response.Write("账号被禁用!");
                }
                else
                {
                    Response.Redirect("index.html");
                }
            }
            else
            {
                Response.Write("用户名或密码错误!");
            }
            conn.Close();

上面的代码是正确的,现在的问题是,在用户名和密码都正确的情况下,我还要判断下user_table 表里的forbidden列(禁用),怎样得到这一列的值

------解决方案--------------------
不能用dr["字段名"]得到嘛
------解决方案--------------------
C# code

            if (dr.HasRows)
            {
                dr.Read();
                if (dr["forbidden"].ToString()=="禁用")//取值之前要Read
                {
                    Response.Write("账号被禁用!");
                }
                else
                {
                    Response.Redirect("index.html");
                }
            }
            else
            {
                Response.Write("用户名或密码错误!");
            }

------解决方案--------------------
if (dr != null && dr.Read())
{
string s = dr["字段名"].ToString();
}