积极答复者
C#中无法在 System.String 和 System.Int32 上执行“=”操作

问题
-
各位老师好:
我编了个小程序,想通过时间来查询某一天发生的事情,没想到会出现这种事情,我一下不知道怎么办了,请老师帮帮我,这是怎么回事?应该怎么解决?
private void button5_Click(object sender, EventArgs e) { string iTime = dateTimePicker1.Value.ToString("yyyy-MM-dd").Trim(); DataView dv = sqlDs.Tables["MaintRecord"].DefaultView; dv.RowFilter = "Time ="+iTime; if(dv.Count>0) { dataGridView1.DataSource = dv;//自动选择行选择 dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect; dataGridView1.Rows[0].Selected = true; //默认选择第一行,光标定位 } }
秦臻
答案
-
老师您好!
非常感谢您的答复,确实管用。我只是有个小小的请求,我不知道这是为什么,授人以鱼不如授人以渔,老师能告诉我为什么这样就可以了吗?
秦臻
秦臻:)很久没有见面了!(*^__^*) 嘻嘻
这个原因很简单:因为你把Time字段定义成varchar,自然在RowFilter是字符串型string。所以必须要加引号;就好比说你字符串比大小——
只能是:
if ("a"=="b")
而不能是
if(a==b)
一样的道理。
如果你有其它意见或私下交流,请直接发送maledong_work@foxmail.com;或者
下载MSDN桌面工具(Vista,Win7)
我的博客园
慈善点击,点击此处
- 已编辑 ThankfulHeartModerator 2011年11月10日 7:48
- 已标记为答案 秦臻 2011年11月10日 13:43
-
Hi 秦臻,
其实这个也可以在官方的文档中找到原因:下表中的第一列显示的是时间字符串文字,第二列显示的是日期或时间数据类型,第一列中的时间字符串文字将插入到第二列中与之对应的数据类型的数据库表列中。第三列显示的是将存储在对应数据库表列中的值。
插入的字符串文字
列数据类型
存储在列中的值
说明
'12:12:12.1234567'
time(7)
12:12:12.1234567
如果秒的小数部分精度超过为列指定的值,则字符串将被截断,且不会出错。
'2007-05-07'
date
NULL
任何时间值均将导致 INSERT 语句失败。
'12:12:12'
smalldatetime
1900-01-01 12:12:00
任何秒的小数部分精度值都将导致 INSERT 语句失败。
'12:12:12.123'
datetime
1900-01-01 12:12:12.123
任何长于三位的秒精度都将导致 INSERT 语句失败。
'12:12:12.1234567'
datetime2(7)
1900-01-01 12:12:12.1234567
如果秒的小数部分精度超过为列指定的值,则字符串将被截断,且不会出错。
'12:12:12.1234567'
datetimeoffset(7)
1900-01-01 12:12:12.1234567 +00:00
如果秒的小数部分精度超过为列指定的值,则字符串将被截断,且不会出错。
其中第一列就是在SQL语句中日期时间具体值的写法.
官方文档: http://msdn.microsoft.com/zh-cn/library/bb677243.aspx.
祝你快乐每一天,
Leo Liu [MSFT]
MSDN Community Support | Feedback to us
Get or Request Code Sample from Microsoft
Please remember to mark the replies as answers if they help and unmark them if they provide no help.
- 已标记为答案 秦臻 2011年11月10日 13:46
全部回复
-
老师您好!
非常感谢您的答复,确实管用。我只是有个小小的请求,我不知道这是为什么,授人以鱼不如授人以渔,老师能告诉我为什么这样就可以了吗?
秦臻
秦臻:)很久没有见面了!(*^__^*) 嘻嘻
这个原因很简单:因为你把Time字段定义成varchar,自然在RowFilter是字符串型string。所以必须要加引号;就好比说你字符串比大小——
只能是:
if ("a"=="b")
而不能是
if(a==b)
一样的道理。
如果你有其它意见或私下交流,请直接发送maledong_work@foxmail.com;或者
下载MSDN桌面工具(Vista,Win7)
我的博客园
慈善点击,点击此处
- 已编辑 ThankfulHeartModerator 2011年11月10日 7:48
- 已标记为答案 秦臻 2011年11月10日 13:43
-
Hi 秦臻,
其实这个也可以在官方的文档中找到原因:下表中的第一列显示的是时间字符串文字,第二列显示的是日期或时间数据类型,第一列中的时间字符串文字将插入到第二列中与之对应的数据类型的数据库表列中。第三列显示的是将存储在对应数据库表列中的值。
插入的字符串文字
列数据类型
存储在列中的值
说明
'12:12:12.1234567'
time(7)
12:12:12.1234567
如果秒的小数部分精度超过为列指定的值,则字符串将被截断,且不会出错。
'2007-05-07'
date
NULL
任何时间值均将导致 INSERT 语句失败。
'12:12:12'
smalldatetime
1900-01-01 12:12:00
任何秒的小数部分精度值都将导致 INSERT 语句失败。
'12:12:12.123'
datetime
1900-01-01 12:12:12.123
任何长于三位的秒精度都将导致 INSERT 语句失败。
'12:12:12.1234567'
datetime2(7)
1900-01-01 12:12:12.1234567
如果秒的小数部分精度超过为列指定的值,则字符串将被截断,且不会出错。
'12:12:12.1234567'
datetimeoffset(7)
1900-01-01 12:12:12.1234567 +00:00
如果秒的小数部分精度超过为列指定的值,则字符串将被截断,且不会出错。
其中第一列就是在SQL语句中日期时间具体值的写法.
官方文档: http://msdn.microsoft.com/zh-cn/library/bb677243.aspx.
祝你快乐每一天,
Leo Liu [MSFT]
MSDN Community Support | Feedback to us
Get or Request Code Sample from Microsoft
Please remember to mark the replies as answers if they help and unmark them if they provide no help.
- 已标记为答案 秦臻 2011年11月10日 13:46