从数据库读取布尔值?
在C#中,使用SqlDataReader,有没有办法从数据库读取布尔值?
while (reader.Read())
{
destPath = reader["destination_path"].ToString();
destFile = reader["destination_file"].ToString();
createDir = reader["create_directory"].ToString();
deleteExisting = Convert.ToBoolean(reader["delete_existing"]);
skipIFolderDate = reader["skipifolderdate"].ToString();
useTempFile = reader["useTempFile"].ToString();
password = reader["password"].ToString();
}
在上面的代码中,delete_existing 在数据库中始终为 1 或 0。我在 MSDN 上读到 Convert.ToBoolean() 不接受 1 或 0 作为有效输入。它只接受 true 或 false。是否有其他方法将 DB 值转换为布尔值?或者我需要在 SqlDataReader 之外执行此操作吗?
另外,我无法更改 DB 值,因此请不要回答“将 DB 值从 1 和 0 更改为 true 和 false”。
谢谢!
In C#, using SqlDataReader, is there a way to read a boolean value from the DB?
while (reader.Read())
{
destPath = reader["destination_path"].ToString();
destFile = reader["destination_file"].ToString();
createDir = reader["create_directory"].ToString();
deleteExisting = Convert.ToBoolean(reader["delete_existing"]);
skipIFolderDate = reader["skipifolderdate"].ToString();
useTempFile = reader["useTempFile"].ToString();
password = reader["password"].ToString();
}
In the code above, delete_existing is always a 1 or 0 in the DB. I read on MSDN that Convert.ToBoolean() does not accept a 1 or 0 as valid input. It only accepts true or false. Is there an alternative way to convert a DB value to a bool? Or do I need to do this outside of the SqlDataReader?
Also, I can not change the DB values, so please no answers saying, "Change the DB values from 1's and 0's to true's and false's."
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
如果
delete_existing
的类型是sqlserver'bit'类型,你可以这样做:或者(但如果
delete_existing
可以是DBNull
,它会崩溃)或者更好,下面的这个是
DBNull
证明,如果列是DBNull
,则返回 false否则,如果数据库类型是
int
:或者如果它是
varchar
If the type of
delete_existing
is a sqlserver 'bit' type, you can do :or (but it will crash if
delete_existing
can beDBNull
)or better, this onebelow is
DBNull
proof and returns false if the column isDBNull
Otherwise if the database type is
int
:or if it is a
varchar
铸造作品:
myVar = (bool)dataReader["myColumn"];
Casting works:
myVar = (bool)dataReader["myColumn"];
这个怎么样?
布尔值可能是最容易转换的类型。这是“Y”、“N”版本:
How about this?
Boolean is probably the easist type to convert something to. Here's the 'Y', 'N' version:
如果您在 SELECT 中使用 CASE 并希望使用 GetBoolean,则在读取之前使用 CAST 将列更改为位。
例如:
那么你可以使用
If you are using CASE in SELECT and want to use GetBoolean then use CAST to change the column to bit before reading.
For eg:
then you can use