向数据库添加日期出错

jpngg 2008-07-15 09:33:37
在通过数据集向数据库插入一条记录时,其中日期字段出错,请帮忙看是哪儿的问题,具体:
页面日期文本框里录入日期(比如“2008-07-15”),向数据库添加时有一下报错:

异常详细信息: System.ArgumentException: System.FormatException: 该字符串未被识别为有效的 DateTime。 at System.DateTimeParse.Parse(String s, DateTimeFormatInfo dtfi, DateTimeStyles styles) at System.DateTime.Parse(String s, IFormatProvider provider, DateTimeStyles styles) at System.DateTime.Parse(String s, IFormatProvider provider) at System.Convert.ToDateTime(String value, IFormatProvider provider) at System.String.System.IConvertible.ToDateTime(IFormatProvider provider) at System.Convert.ToDateTime(Object value) at System.Data.Common.DateTimeStorage.Set(Int32 record, Object value) at System.Data.DataColumn.set_Item(Int32 record, Object value)不能在 writingdate 列中存储 <>。所需类型是 DateTime。
源错误:
...
行 171: anyRow("writingdate") = TextBox5.Text
...

数据库中的日期为DateTime类型,8位。如果将文本框中的数据强制转换为日期型时,则提示:
从字符串“”到类型“Date”的强制转换无效
究竟哪儿的错?

...全文
230 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
blankfang 2008-07-16
  • 打赏
  • 举报
回复
传值有问题!
jpngg 2008-07-16
  • 打赏
  • 举报
回复
数据库id列设置为自动递增,每次插入一行时,只有id序号,其他字段都是空的,说明上面哪个语句肯定有问题。(注:把日期字段去掉后发现这一问题)
柳晛 2008-07-16
  • 打赏
  • 举报
回复
操作时间字段的SQL语句需要将时间用单引号括起来。
string sqlStr = "INSERT INTO 测试表(时间) VALUES('" + txb.Text.Trim() + "')";
  • 打赏
  • 举报
回复
在protected void Page_Load(object sender, EventArgs e)事件里加if (!IsPostBack){}
minhua1983 2008-07-16
  • 打赏
  • 举报
回复
-的半角问题~楼主要仔细。。。
leon28 2008-07-16
  • 打赏
  • 举报
回复
肯定是数据类型问题,望楼主好生检查
「已注销」 2008-07-16
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 liuhz_jsmstc 的回复:]
注意输入法的区别,
2008-7-15是不行的
2008-7-15却是可以的
区别就在于那两个短杠是中文输入还是英文输入
[/Quote]
liuhz_jsmstc 2008-07-16
  • 打赏
  • 举报
回复
注意输入法的区别,
2008-7-15是不行的
2008-7-15却是可以的
区别就在于那两个短杠是中文输入还是英文输入
jpngg 2008-07-15
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 cooolchen 的回复:]
从字符串“”到类型“Date”的强制转换无效
---看这个提示可知道是Text里面没有被赋值,就是说TextBox5.Text=“”;
[/Quote]
对,不知道为什么没赋值成功,数据库除id列外插入的都是空的:
Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
SqlDataAdapter1.UpdateCommand.Connection = SqlConnection1
SqlDataAdapter1.SelectCommand = New SqlClient.SqlCommand("Select * from news", SqlConnection1)
SqlDataAdapter1.Fill(DataSet11, "news")
Dim strsql As String = "INSERT INTO news(...content,writingdate) VALUES(...@content,@writingdate)"
'参数已经配置
SqlDataAdapter1.InsertCommand.CommandText = strsql
Dim anyRow As DataRow = DataSet11.Tables("news").NewRow
'其他字段略
anyRow("content") = TextBox4.Text
anyRow("writingdate") = TextBox5.Text
DataSet11.Tables("news").Rows.Add(anyRow)
SqlDataAdapter1.Update(DataSet11, "news")
DataSet11.Tables("news").AcceptChanges()
SqlDataAdapter1.Fill(DataSet11, "news")
SqlDataAdapter1.Dispose()
End Sub
以前可以的,这次不知道哪儿错了
cooolchen 2008-07-15
  • 打赏
  • 举报
回复
确保Text里面的值为“2008-07-15” ,然后再做类型转换,可以转成DataTime的
cooolchen 2008-07-15
  • 打赏
  • 举报
回复
从字符串“”到类型“Date”的强制转换无效
---看这个提示可知道是Text里面没有被赋值,就是说TextBox5.Text=“”;
jpngg 2008-07-15
  • 打赏
  • 举报
回复
我知道了,不是这儿的问题,其他几个文本框也插入不了数据,奇怪,以前可以的,这次不知道哪儿出错了,谢谢各位
bobo_555 2008-07-15
  • 打赏
  • 举报
回复
DateTime.TryParse方法

lendylixt 2008-07-15
  • 打赏
  • 举报
回复
你用的什么数据库啊
如果是SqlServer的话
用DateTime.Parse()应该是可以添加进去的
如果是Oracle数据库的话
你最好输入string型,在sql语句中todate一下
其他的非微软数据库同理
你可以试试
Nobel0429 2008-07-15
  • 打赏
  • 举报
回复
Format(Convert.ToDateTime(TextBox1.Text), "yyyMMdd")
这个是VB的 如果你是C#开发的 自己转下
Nobel0429 2008-07-15
  • 打赏
  • 举报
回复
数据库最好用smallDateTime类型
插入的时候用 format格式以下 或者用convert转一下
jpngg 2008-07-15
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 Hack95 的回复:]
2008.7.15
[/Quote]
不对,根本不行,好像不是这儿的问题吧
柳晛 2008-07-15
  • 打赏
  • 举报
回复
用控件可以先检测输入格式是否合法。
<asp:CompareValidator ID="控件名称" runat="server" ControlToValidate="文本框名称" Display="Dynamic" ErrorMessage="错误提示" Operator="DataTypeCheck" Type="Date"></asp:CompareValidator>
jpngg 2008-07-15
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 whosyourdaddy 的回复:]
为什么不用datetimepicker控件,好像是这么拼的
[/Quote]
谢谢,这个问题解决后试一下,文本框里录入数据应该可以做的
柳晛 2008-07-15
  • 打赏
  • 举报
回复
2008.7.15
加载更多回复(3)

62,104

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧