vb.net中提示将string转换为datetime失败,运行就提示这个,头疼一上午了,求解

for sad 2020-07-18 12:23:59
Imports System.Data.SqlClient
Public Class Form4
Dim cn As SqlConnection
Dim da As SqlDataAdapter
Dim ds As DataSet
Private Sub Form4_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim cnstr As String = "Data Source=(local);initial Catalog=AmusementPark;Integrated Security=true;"
cn = New SqlConnection(cnstr)
da = New SqlDataAdapter("select * from 游客表", cn)
ds = New DataSet()
da.Fill(ds, "游客表")
DataGridView1.DataSource = ds.Tables("游客表")
TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = ""
TextBox4.Text = ""
TextBox5.Text = ""
TextBox6.Text = ""
End Sub

Private Sub Button10_Click(sender As Object, e As EventArgs) Handles Button10.Click
Me.Hide()
Form2.Show()
End Sub

Private Sub DataGridView1_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick

End Sub

Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged

End Sub

Private Sub Button7_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button7.Click
If Me.TextBox1.Text <> "" And Me.TextBox2.Text <> "" Then
Dim insert As String
insert = "insert into 游客表(Vid,VName,ID,FP,Pword,Birthdate)"
insert = insert & "values (@ei,@ci,@cc,@zyh,@ce,@cg)"
Call cn.Open()
Dim cmd As New SqlClient.SqlCommand(insert, cn)
cmd.Parameters.Add("@ei", SqlDbType.BigInt).Value = Trim(TextBox1.Text)
cmd.Parameters.Add("@ci", SqlDbType.NVarChar).Value = Trim(TextBox2.Text)
cmd.Parameters.Add("@cc", SqlDbType.Char).Value = Trim(TextBox3.Text)
cmd.Parameters.Add("@zyh", SqlDbType.NVarChar).Value = Trim(TextBox4.Text)
cmd.Parameters.Add("@cg", SqlDbType.Date).Value = Trim(TextBox6.Text)
cmd.Parameters.Add("@ce", SqlDbType.NVarChar).Value = Trim(TextBox5.Text)
Dim v = cmd.ExecuteNonQuery()
MsgBox("添加成功!", MsgBoxStyle.Information, "提示")
Call cn.Close()
Else
MsgBox("游客姓名和编号不能为空!", MsgBoxStyle.Information, "提示")
End If
End Sub

Private Sub Button9_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button9.Click
If Me.TextBox1.Text <> "" And Me.TextBox2.Text <> "" Then
Dim edit As String
edit = "update 游客表 set Vid=@ei,VName=@ci,ID=@cc,FP=@zyh,Pword=@ce,Birthdate=@cg"
edit = edit & " where 姓名='" & Trim(TextBox1.Text) & "'"
Call cn.Open()
Dim cmd As New SqlClient.SqlCommand(edit, cn)
cmd.Parameters.Add("@ei", SqlDbType.BigInt).Value = Trim(TextBox1.Text)
cmd.Parameters.Add("@ci", SqlDbType.NVarChar).Value = Trim(TextBox2.Text)
cmd.Parameters.Add("@cc", SqlDbType.Char).Value = Trim(TextBox3.Text)
cmd.Parameters.Add("@zyh", SqlDbType.NVarChar).Value = Trim(TextBox4.Text)
cmd.Parameters.Add("@cg", SqlDbType.Date).Value = Trim(TextBox6.Text)
cmd.Parameters.Add("@ce", SqlDbType.NVarChar).Value = Trim(TextBox5.Text)
cmd.ExecuteNonQuery()
MsgBox("修改成功!", MsgBoxStyle.Information, "提示")
Call cn.Close()
Else
MsgBox("游客编号和姓名不能为空!", MsgBoxStyle.Information, "提示")
End If
End Sub
...全文
7245 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
三楼の郎 2020-07-30
  • 打赏
  • 举报
回复
引用 9 楼 hztltgg 的回复:
[quote=引用 7 楼 for sad 的回复:]本来就是这学期网上授课才接触到这个东西,很多东西都是上网搜寻内容或者是问同学摸索,我是本着虚心求问的态度发帖,又不是给你个平台让你在这里高谈阔论来展示你所谓的“专业素养”。
哎,可能你刚来,不知道回复你的是为大神,这位大神虽然说的话你不爱听,但句句珠玑,新手可能没体会,过段时间回i来看会明白的,教你捕鱼比给你鱼要有用的多。 至于你的问题,其实也回复了,就是要类型转换,用类型转换,你的问题就会变成类型转换失败,而不是数据库相关的问题了,至于类型转换失败,就需要最开始前端做限制[/quote] Private Sub Button9_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button9.Click if not isdate(textbox6.text) then msgbox("无效的日期!", MsgBoxStyle.Information, "提示") exit sub end if If Me.TextBox1.Text <> "" And Me.TextBox2.Text <> "" Then ………… Else MsgBox("游客编号和姓名不能为空!", MsgBoxStyle.Information, "提示") End If end sub 简单粗暴,不是每个捕鱼的人都想知道如何结网的,或许人家就是单纯的想要条鱼
  • 打赏
  • 举报
回复
看看你的数据值是啥
PirateNOX 2020-07-27
  • 打赏
  • 举报
回复
数据类型一定玩匹配,还有Null。 不搞清楚,在一些极端情况(你认为的)下就会出错
hztltgg 2020-07-20
  • 打赏
  • 举报
回复
引用 7 楼 for sad 的回复:
本来就是这学期网上授课才接触到这个东西,很多东西都是上网搜寻内容或者是问同学摸索,我是本着虚心求问的态度发帖,又不是给你个平台让你在这里高谈阔论来展示你所谓的“专业素养”。
哎,可能你刚来,不知道回复你的是为大神,这位大神虽然说的话你不爱听,但句句珠玑,新手可能没体会,过段时间回i来看会明白的,教你捕鱼比给你鱼要有用的多。 至于你的问题,其实也回复了,就是要类型转换,用类型转换,你的问题就会变成类型转换失败,而不是数据库相关的问题了,至于类型转换失败,就需要最开始前端做限制
秋天之落叶 2020-07-19
  • 打赏
  • 举报
回复
系统格式和应用格式不一致也会提示错误,比如 - / 等,我曾经受到过类似的折磨。 另外,我友情提示一下,如果学校没有限制应用语言,建议Delphi,比VB强太多了。
  • 打赏
  • 举报
回复
另外,类似
cmd.Parameters.Add("@ei", SqlDbType.BigInt).Value = Trim(TextBox1.Text)
这类代码,也是同一类问题。不要靠运气去胡乱写代码,靠运气蒙过去的代码,会凭本事彻底在最终用户面前、在特定数据和流程面前,丢人。
X-i-n 2020-07-18
  • 打赏
  • 举报
回复
TextBox6.Text里面是什么内容? 插入数据库之前,尽可能对每个字段进行一下判断,是否合法。比如数据库的DataTime字段,插入一个"abc"肯定会失败,如果提前判断出来,就不需要额外做一次插入记录的动作,也不需要靠异常来捕获这个完全可以避免的输入错误。
  • 打赏
  • 举报
回复
cmd.Parameters.Add("@cg", SqlDbType.Date).Value = Trim(TextBox6.Text)


这种代码类型不一致
for sad 2020-07-18
  • 打赏
  • 举报
回复
本来就是这学期网上授课才接触到这个东西,很多东西都是上网搜寻内容或者是问同学摸索,我是本着虚心求问的态度发帖,又不是给你个平台让你在这里高谈阔论来展示你所谓的“专业素养”。
  • 打赏
  • 举报
回复
引用 4 楼 for sad 的回复:
本人医学专业的学生,SQL数据库设计才接触到vb.net,所以确实是有很多不懂,您说丢人那也确实是,不过我只是想来寻找解决问题的方法


编程的“类型系统”,就好像是医学专业能用仪器检查、临床科学实验来验证,而不是靠“诊脉”来透视一切病症。
  • 打赏
  • 举报
回复
编写程序,“从类型出发进行设计”是个必要的素质,实际上很清楚地表示一个程序员所受的当初的编程教育的档次。例如
 Dim t = CType("2012/7/18 13:0", Date)
这样的强类型代码表示你知道要在编译时进行尽量地检查,运行时要尽可能提前报错。而不是推迟。

类型上含糊甚至错误的代码,这么明显地糊弄过去了,如果在代码复查是如果自己看不出来,是个很严重的问题,是个上岗前就会严格对待的问题。
for sad 2020-07-18
  • 打赏
  • 举报
回复
本人医学专业的学生,SQL数据库设计才接触到vb.net,所以确实是有很多不懂,您说丢人那也确实是,不过我只是想来寻找解决问题的方法

16,721

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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