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

Oracle查询数据出错了

错误信息: ORA-01008: 并非所有变量都已关联


public UserInfoModel Login(string dlm, string mm)
        {
            string sql = "select * from userinfo where US_DLM=:DLM AND US_MM=:MM";
            UserInfoModel userInfo = new UserInfoModel();
            using (OracleConnection conn = new OracleConnection(connString))
            {
                OracleCommand cmd = new OracleCommand();
                cmd.Connection = conn;
                cmd.CommandType = CommandType.Text;
                cmd.CommandText = sql;
                OracleParameter[] parameters = {
new OracleParameter(":DLM", OracleType.VarChar,50),
new OracleParameter(":MM", OracleType.VarChar,200)};
                parameters[0].Value = dlm;
                parameters[1].Value = mm;
                conn.Open();

                OracleDataReader reader = cmd.ExecuteReader();  //执行到这里就出错了
                if (reader.Read())
                {
                    userInfo.US_XTBH = reader["US_XTBH"].ToString();
                    userInfo.US_DLM = reader["US_DLM"].ToString();
                    userInfo.US_MM = reader["US_MM"].ToString();
                    userInfo.US_RYBH = reader["US_RYBH"].ToString();
                    userInfo.US_XM = reader["US_XM"].ToString();
                    userInfo.US_DW = reader["US_DW"].ToString();
                    userInfo.US_YDDH = Convert.ToInt32(reader["US_YDDH"]);
                    userInfo.US_YX = reader["US_YX"].ToString();
                    userInfo.US_ZW = reader["US_ZW"].ToString();
                    userInfo.US_GS = reader["US_GS"].ToString();
                    userInfo.US_BM = reader["US_BM"].ToString();
                    userInfo.US_DH = reader["US_DH"].ToString();
                    userInfo.US_BZ = reader["US_BZ"].ToString();
                }
                reader.Close();
                conn.Close();
            }
            return userInfo;
        }
--------------------编程问答-------------------- string sql = "select * from userinfo where US_DLM=':DLM' AND US_MM=':MM'";
--------------------编程问答--------------------                     new OracleParameter(":DLM", OracleType.VarChar,50),
                    new OracleParameter(":MM", OracleType.VarChar,200)};
这两句中的参数名不要带冒号了 --------------------编程问答--------------------
引用 1 楼 liuwei2500 的回复:
string sql = "select * from userinfo where US_DLM=':DLM' AND US_MM=':MM'";

改成这样,执行过去了。
但执行到这里  if (reader.Read())
直接跳出去了。没有进if,晕,条件都是正确的,结果没有查到数据
--------------------编程问答-------------------- 实在不行就用字符串拼接吧。


--------------------编程问答-------------------- 查出来,ok 
少写了一段代码
 foreach (object obj in parameters)
                {
                    cmd.Parameters.Add((OracleParameter)obj);
                } --------------------编程问答--------------------
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,