C# 如何将是/否值作为布尔值从Access数据库中读取?
帮助我以布尔格式从MS access检索C# 如何将是/否值作为布尔值从Access数据库中读取?,c#,.net,wpf,ms-access,C#,.net,Wpf,Ms Access,帮助我以布尔格式从MS access检索YES/NO数据类型 我试图解析它,但它总是返回false 更新:实际上不是问题 抱歉,它接受是/否作为布尔值 OleDbconnection dbConnect = new OleDbConnection(".....*.MDB"); dbConnect.Open(); ..... ... //xyz = dbCommand.ExecuteReader() bool value = (bool)xyz[1]; 下次我会做更多的研究,在提问之前找出一些小
YES/NO
数据类型
我试图解析它,但它总是返回false
更新:实际上不是问题抱歉,它接受是/否作为布尔值
OleDbconnection dbConnect = new OleDbConnection(".....*.MDB");
dbConnect.Open();
.....
...
//xyz = dbCommand.ExecuteReader()
bool value = (bool)xyz[1];
下次我会做更多的研究,在提问之前找出一些小错误。。对不起,大家根据我的记忆,是/否实际上是一个1或-1的数字,其中1为真
每移动一次校正。。。0=假,-1=真。。我上次使用Access大约是在2005年,所以我并不完美:)问题是.Net的布尔值定义为
0 = false
1 = true
但是MS Access使用以下值作为其布尔值
0 = false
-1 = true
因此,您必须手动将此整数值转换为相应的布尔值。ms access可能是.mdb文件或.accdb
OleDbconnection dbConnect = new OleDbConnection(".....*.MDB");
dbConnect.Open();
.....
...
//xyz = dbCommand.ExecuteReader()
bool value = (bool)xyz[1];
使用调试器查看返回的值
我猜真的是==0,假的是=0
false = 0
true = !false
这就是你所需要知道的。希望最终解决这个问题:
Yes/True
和No/False
使用什么并不重要。我们得到一个System.Boolean
值Yes/No
字段为Yes/True
或No/False
NULL
值为No/False
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.Data.OleDb;
名称空间oleDbTest
{
班级计划
{
静态void Main(字符串[]参数)
{
字符串myConnectionString;
myConnectionString=
@“Provider=Microsoft.ACE.OLEDB.12.0;”+
@“数据源=C:\Users\Public\Database1.accdb;”;
使用(var con=new OleDbConnection())
{
con.ConnectionString=myConnectionString;
con.Open();
使用(var cmd=new OleDbCommand())
{
//为了确定,让我们强制其中一个值为Null
cmd.Connection=con;
cmd.CommandText=
“更新YesNoTable集合YesNoField=NULL”+
“其中Description='Null';
cmd.ExecuteNonQuery();
}
使用(var cmd=new OleDbCommand())
{
cmd.Connection=con;
cmd.CommandText=
“从YesNoTable中选择ID、YesNoField、Description”;
OleDbDataReader rdr=cmd.ExecuteReader();
while(rdr.Read())
{
WriteLine(String.Format(“Row{0}:”,rdr[“ID”]);
bool boolValue=Convert.ToBoolean(rdr[“YesNoField”]);
WriteLine(String.Format(“Description is:{0}”,rdr[“Description”]);
WriteLine(String.Format(“返回类型为:{0}”,rdr[“YesNoField”].GetType());
WriteLine(String.Format(“原始值为:{0}”,rdr[“YesNoField”]));
WriteLine(String.Format(“boolValue是:{0}”,boolValue));
Console.WriteLine();
}
}
con.Close();
}
控制台。WriteLine(“完成”);
}
}
}
结果:
第1行:
描述是:是的
返回类型为:System.Boolean
原始值为:True
布尔值是:真的
第2行:
描述是:没有
返回类型为:System.Boolean
原始值为:False
布尔值为:False
第3行:
说明为:空
返回类型为:System.Boolean
原始值为:False
布尔值为:False
完成。
它是布尔型的,并且仍然是布尔型的。您能展示一下您尝试了什么(更具体地说是您的代码)吗?@Remou,很抱歉。。。我上一次使用access是在2005年左右,但至少我记得它不是像“是”或“否”这样的字符串,也不是其他可枚举的:)来自审阅队列:我可以请求您在您的答案周围添加一些上下文吗。只有代码的答案很难理解。如果你能在你的文章中添加更多的信息,这将有助于询问者和未来的读者。