我正在开发一个将电子表格中的数据存储到Postgresql数据库的应用程序.我熟悉C#和.Net但对Postgresql不太熟悉.我将DateTime值存储到TimeStamp列中时遇到问题.我一直收到一条错误消息:无法将参数值从DateTime转换为Byte [].任何意见,将不胜感激.
string query = "INSERT INTO organizer(organizer_name, contact_name, phone, alt_phone, created_date, last_update) " +
"VALUES('@name', '@contactname', '@phone', '@altphone', '@created', '@updated')";
OdbcCommand cmd = new OdbcCommand(query, con);
cmd.Parameters.Add("@name", OdbcType.VarChar);
cmd.Parameters["@name"].Value = org.Name;
cmd.Parameters.Add("@contactname", OdbcType.VarChar);
cmd.Parameters["@contactname"].Value = org.ContactName;
cmd.Parameters.Add("@phone", OdbcType.VarChar);
cmd.Parameters["@phone"].Value = org.Phone;
cmd.Parameters.Add("@altphone", OdbcType.VarChar);
cmd.Parameters["@altphone"].Value = org.AltPhone;
cmd.Parameters.Add("@created", OdbcType.Timestamp).Value = DateTime.Now;
cmd.Parameters.Add("@updated", OdbcType.Timestamp).Value = DateTime.Now;
con.Open();
cmd.ExecuteNonQuery();
Run Code Online (Sandbox Code Playgroud)
您在这里有一些解决方案...我假设组织者表将created_date 和last_update 作为时间戳字段,对吗?最愚蠢的答案是将它们更改为 varchar 字段。呵呵。
2 个更好的答案...我假设这是一个格式错误,其中 DateTime.Now 没有以 pgsql 想要的格式返回:
因为您只是给它当前的时间戳
您可以将表定义为将这些列默认为 now(),然后不将值传递给此列,在插入时,表将仅使用 now() 的默认值填充该列。
无需将变量定义为 DateTime.Now 然后传递该变量,只需发送 postgres now() ,它就会以正确的格式填充它。
第二个潜力是将日期格式化为 PG 期望的插入语句的一部分...我需要知道 DateTime.Now 给出的值以将其格式化为 pg 想要看到的值。这可能是一些字符串操作......
| 归档时间: |
|
| 查看次数: |
7910 次 |
| 最近记录: |