在表的一个中,我有一个字段,用于将值存储在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类型数据字段中。
如何检查数据类型的值? 如果错误,请通过查询更正?
答案 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;
}