使用getdate()列查询表时出现C#WebMatrix格式错误

时间:2015-06-03 14:25:02

标签: c# webmatrix

当有人在我的网站上搜索时,会在tbl_search表格中创建一条记录。数据库通过将getdate()作为数据绑定来决定时间戳。

我正在尝试从此表中获取所有数据:

@{
  WebMartix.Data.Database DB = WebMatrix.Data.Database.Open(MyConString)
  var data = DB.Query("SELECT * FROM tbl_search"); // <<<<<< error occurrs here <<<<<<
  foreach (var d in data){
    @d.phrase
  }
}

错误是:Input string was not in a correct format.

但是,VS中的帮助窗口有一个疑难解答提示:

  

将字符串转换为DateTime时,解析字符串以在将每个变量放入DateTime对象之前获取日期。

  • 如果我将表格更改为没有getdate()数据绑定的表格,则可以正常工作。
  • 当我在SQL Management Studio上运行相同的查询时,它可以正常工作。
  • 我将查询放在存储过程中,结果相同:在SQL mgmt studio中工作,但在网站上没有。

我做了更多的研究,但为了简洁而决定不去展示它,特别是因为我在写完问题时偶然发现了解决方案。

1 个答案:

答案 0 :(得分:0)

查询中的ASTERISK(*)导致错误。

我将其替换为phrase, timestamp并且有效:

@{
  WebMartix.Data.Database DB = WebMatrix.Data.Database.Open(MyConString)
  var data = DB.Query("SELECT phrase, timestamp FROM tbl_search");
  foreach (var d in data){
    @d.phrase
  }
}

当我通过反复试验找到解决方案时,我一直在研究这个问题。我在网上找不到关于这个WebMatrix的文档... [bug]也许?所以我决定发帖,希望下一个人可以更容易找到它,也许有更多专业知识的人可以解释为什么星号在查询中没有工作,但只有当表有一个getdate() - 生成时列。