【发布时间】:2020-09-21 09:22:18
【问题描述】:
我正在使用 Visual Studio 2010 开发 Web 应用程序。我正在使用 SQL Server 2008 写入和读取数据库表。
我有一个数据库表myTable,其中有一列myColumn 的数据类型为bit。我在网络应用程序上这样写这个专栏:
UPDATE myTable
SET myColumn = 1
这很好用,使用 SQL Server Management Studio,我可以看到该列已更新为 TRUE,正如我所期望的那样。
在我的网络应用程序的另一部分,我像这样查询表格:
sqlCmd.CommandText = "SELECT myColumn FROM myTable"
sqlRdr = sqlCmd.ExecuteReader()
While sqlRdr.Read
myColumn = sqlRdr(0)
End While
当我运行这个查询时,myColumn 被设置为 -1。这是怎么发生的?根据Microsoft Documentation 有点是
整数数据类型,可以取值 1、0 或 NULL。
和
字符串值 TRUE 和 FALSE 可以转换为位值:TRUE 转换为 1,FALSE 转换为 0。
我不明白我是如何从这个查询中得到 myColumn = -1 的。
【问题讨论】:
-
myColumn的数据类型是什么?它在您的 VB.net 代码中是如何定义的? -
@AaronBertrand 我相信 OP 在他的问题中已经说明了数据类型位。
-
@Mary 是 SQL Server 中表中的数据类型。我在询问 VB.net 代码中的
myColumn变量。 -
来自 MS Docs “从整数或浮点数到布尔值的所有转换都将非零值转换为真,零值转换为假。” docs.microsoft.com/en-us/dotnet/api/…
-
@AaronBertrand
myColumn的数据类型在我遇到问题之前是Integer。然后我将其更改为数据类型Boolean以按我的预期工作,但对后台发生的事情感到好奇,因此这篇文章。
标签: vb.net sql-server-2008 sqldatatypes