我用SQL Server CE做数据库,做了一个小日记本程序。数据表主键是DateTime类型的,发现通过VC# 2008自动生成的数据集不能用FindByXXXX函数查找数据,返回的东西始终为null。 我感觉数据表中的数据比我的多了Millisecond,不知道如何忽略Millisecond比较。或者有其他方法?谢谢,在线等
最后我还是用int的ID主键重构了项目。 另外回答一下上面的问题: 1.SQL Server CE 是微软为移动设备的.net平台开发的轻量级数据库。但是我觉得用在桌面应用上一样很适合,感觉数据库的安全性和大小,运行效率都很满意。 2.SQL Server CE中好像没有smalldatetime类型,毕竟是很简单的数据库。 3.我的问题原因在于用datetime做主键,在vs2008生成的数据集中支持不太好。谢谢
DateTime dt2 = AddDateTime;
dt1 = dt1.AddMilliseconds(-dt1.Millisecond);
dt2 = dt2.AddMilliseconds(-dt2.Millisecond);
object oo = MyDiaryHelper.DbManagerInstance.DiaryTable.FindByAddDateTime(dt2);
然后把每条数据的时间转成特定格式的日期字符串存入数据库
这样比较和使用就方便了
既然你的需求不需要到毫秒,那么定义的字段也不应定义毫秒,定义smalldatetime,应该没有毫秒了。
SQL Server CE没有smalldatetime。
我最后倒是用这样解决了: MyDiary.Db.DiaryDataSet.DiaryRow di_row = null;
foreach (DataRow dr in MyDiaryHelper.DbManagerInstance.DiaryTable.Rows)
{
DateTime tmp = (DateTime)dr[0];
tmp = tmp.AddMilliseconds(-tmp.Millisecond); // 忽略千分之一秒差 if (tmp == AddDateTime)
{
di_row = dr as MyDiary.Db.DiaryDataSet.DiaryRow;
break;
}
}
另外回答一下上面的问题:
1.SQL Server CE 是微软为移动设备的.net平台开发的轻量级数据库。但是我觉得用在桌面应用上一样很适合,感觉数据库的安全性和大小,运行效率都很满意。
2.SQL Server CE中好像没有smalldatetime类型,毕竟是很简单的数据库。
3.我的问题原因在于用datetime做主键,在vs2008生成的数据集中支持不太好。谢谢