无法从我的数据库中提取正确的值

时间:2014-12-01 18:32:46

标签: c# sql database

很抱歉没有把问题放在标题中,真正的问题是我看不到代码的问题,但它没有产生我想要的东西。

所以我编写了一些代码,用于获取数据库的Password字段并检查其值,然后将该值存储为密码变量中的字符串。在SQL Management studio中,值为'MyPass',这是我在将密码变量打印为MessageBox时所期望的。相反,我得到两个盒子,'密码',然后'密码123'。表中唯一的列:Login,是一个名为Password的列。

以下是使用声明:

using(SqlConnection con = new SqlConnection(connectionString))
        {
            string query = "SELECT Password FROM LoginInfo"; 
            con.Open(); 

            //SqlCommand to be executed against my DB with the query text and the connection object. 
            SqlCommand myCommand = new SqlCommand(query, con);
            //Sends CommandText to connection. Creates a 
            SqlDataReader read = myCommand.ExecuteReader(); 

            while(read.Read())
            {
                //Convert read to IDataRecord.
                ReadSingleRow((IDataRecord)read);  

            }
            read.Close(); 

        }

如果我的评论不正确,我道歉,我把它们写下来,因为它们帮助我思考。

您可以阅读我对下面代码的解释,并告诉我我的思考过程有什么问题,或者您可以只搜索代码示例中的错误。

我的解释(如果你放纵我):

因此,在using语句中,我们创建了一个连接,一个查询字符串,一个SqlCommand和一个SqlDataReader。传递SqlCommand查询字符串和连接对象然后我们将其实例设置为等于SqlDataReader,使用方法ExecuteReader()将其命名为“read”,该方法将命令文本带到连接对象的任何位置。

接下来我们使用while循环,我们使用.Read()将读者推进到第一条记录,因为我的db只有一个记录'Password',这只是将它移动到那个。在我们使用ReadSingleRow方法的同时将读取器实例转换为IDataRecord :((IDataRecord)读取)。

ReadSingleRow方法:

public void ReadSingleRow(IDataRecord record)
    {  
    UserPass = record.GetString(record.GetOrdinal("Password"));


      MessageBox.Show(UserPass);
    }

IDataRecord检索oridinal(ID)密码的字符串值。我的理解是它查看Password:Mypass的值,然后将其存储在UserPass字符串变量中。 MessageBox当然会将变量脱节作为测试,看看它是否有效。它没有。

所以我的问题很烦人:为什么这不起作用?也许我错过了使用IDataRecord。

0 个答案:

没有答案