将 DateTime 作为 VarChar 返回以在 DataGridView 中使用
Posted
技术标签:
【中文标题】将 DateTime 作为 VarChar 返回以在 DataGridView 中使用【英文标题】:Return DateTime as VarChar for use in DataGridView 【发布时间】:2016-06-01 09:42:39 【问题描述】:我在 Visual Studio 中编写了一个简单的数据库应用程序来访问 XAMPP 中的一个小型数据库。
我想用数据库中日期字段的内容填充网格视图。 我在这里遇到的主要问题是 CONVERT 不起作用(语法错误),但我觉得对于简单显示日期的任务来说,有一个更简单的答案。
这是表的创建:
CREATE TABLE `lans` (
`l_id` INT(11) NOT NULL AUTO_INCREMENT,
`l_datum` DATE NOT NULL,
PRIMARY KEY (`l_id`),
UNIQUE INDEX `datum` (`l_datum`)
)
COLLATE='latin1_swedish_ci'
ENGINE=InnoDB
AUTO_INCREMENT=2;
我正在尝试运行的查询:
gridViewLans.DataSource = CLanDB.SQLOpen("select CONVERT(varchar,l_datum, 104) from lans").Tables[0].DefaultView;
还有我写的函数 SQLOpen。
public static DataSet SQLOpen(String cSQL)
mysqlCommand qCmd = oDB.CreateCommand();
qCmd.CommandText = cSQL;
MySqlDataAdapter adap = new MySqlDataAdapter(qCmd);
DataSet set = new DataSet();
adap.Fill(set);
return set;
我得到的错误:
SQL Fehler (1064): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'varchar(100), lans.l_datum, 104) as Lan from lans' at line 1
如何解决语法错误?
【问题讨论】:
为什么不进行查询,当您返回数据集时,将数据网格绑定到 set.Tables[0]` 一旦返回,您也可以在 datagridview 模板中格式化 DataTime 字段,执行类似的操作这个DataFormatString="0:MM-dd-yyyy"
google搜索如何使用DataFormatString
属性
该死,我很愚蠢,这不是表格的显示,而是添加不起作用的新条目并引发格式错误的条目,该条目拒绝绑定到网格视图。
"104" 闻起来像 Sybase 语法,而不是 MySQL。
不要“规范化”日期!
【参考方案1】:
问题是表格中的条目格式错误。 一旦我删除,我可以使用
gridViewLans.DataSource = CLanDB.SQLOpen("select l_datum as LAN from lans").Tables[0];
而且效果很好。
【讨论】:
以上是关于将 DateTime 作为 VarChar 返回以在 DataGridView 中使用的主要内容,如果未能解决你的问题,请参考以下文章
即使没有 datetime 列,也获取“将 varchar 数据类型转换为 datetime 数据类型导致超出范围的值”
将 varchar 数据类型转换为 datetime 数据类型导致 SQL 查询中的值超出范围