检查Access中的YES / NO数据类型的值

时间:2013-06-12 04:12:38

标签: c# asp.net ms-access

在表的一个中,我有一个字段,用于将值存储在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类型数据字段中。

enter image description here

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

2 个答案:

答案 0 :(得分: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";
}

答案 1 :(得分: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;
        }