0

在其中一个表中,我有将值存储为 YES/NO 数据类型的字段。

我正在尝试使用以下查询检查字段的值,但收到如下图所示的错误。

public string getAccess(string username)
        {
            // Create connection object
            OleDbConnection oleConn = new OleDbConnection(connString);
            oleConn.Open();
            string sql = "SELECT [admin] FROM [Users] WHERE [username]='" + username + "'";
            OleDbCommand cmd = new OleDbCommand(sql, oleConn);
            string x = (string)cmd.ExecuteScalar();


            oleConn.Close();


            return x;
        }

字段admin在 YES/NO 类型的数据字段中。

在此处输入图像描述

如何检查数据类型的值?如有错误,请通过查询更正?

4

2 回答 2

2

Access 中的 yes/no 字段等同于 SQL Server 中的位字段类型,因此我相信您应该从方法中返回布尔值而不是字符串,请尝试以下操作:

public bool isAdmin(string username)
{
    // Create connection object
    OleDbConnection oleConn = new OleDbConnection(connString);
    oleConn.Open();
    string sql = "SELECT [admin] FROM [Users] WHERE [username]='" + username + "'";
    OleDbCommand cmd = new OleDbCommand(sql, oleConn);
    bool x = (bool)cmd.ExecuteScalar();

    oleConn.Close();

    return x;
}

或者,如果您确定将字符串作为返回值,那么:

public string getAccess(string username)
{
    // Create connection object
    OleDbConnection oleConn = new OleDbConnection(connString);
    oleConn.Open();
    string sql = "SELECT [admin] FROM [Users] WHERE [username]='" + username + "'";
    OleDbCommand cmd = new OleDbCommand(sql, oleConn);
    bool x = (bool)cmd.ExecuteScalar();

    oleConn.Close();

    return x ? "Yes" : "No";
}
于 2013-06-12T04:28:55.027 回答
1

将方法类型更改为 bool 并且可以正常工作

public bool getAccess(string username)
        {
            // Create connection object
            OleDbConnection oleConn = new OleDbConnection(connString);
            oleConn.Open();
            string sql = "SELECT [admin] FROM [Users] WHERE [username]='" + username + "'";
            OleDbCommand cmd = new OleDbCommand(sql, oleConn);
            bool x = (bool)cmd.ExecuteScalar();


            oleConn.Close();


            return x;
        }
于 2013-06-12T04:19:46.400 回答