Mysql 如何将单选按钮值写入Sql数据库?
我一直在尝试写我的数据库,它几乎完成了我唯一的问题是无线电值,因为在网络表单中有两个问题被问到,回答是或否。我在stackover flow上发现了一个例子Mysql 如何将单选按钮值写入Sql数据库?,mysql,sql,database,vb.net,asp-classic,Mysql,Sql,Database,Vb.net,Asp Classic,我一直在尝试写我的数据库,它几乎完成了我唯一的问题是无线电值,因为在网络表单中有两个问题被问到,回答是或否。我在stackover flow上发现了一个例子 Dim rbval As Integer If RadioButton1.Checked Then rbval = 1 Else rbval = 2 End If cmd.Parameters.Add(New SqlParameter("@ethics", SqlDbType.Int)) cmd.Parameters("@e
Dim rbval As Integer
If RadioButton1.Checked Then
rbval = 1
Else
rbval = 2
End If
cmd.Parameters.Add(New SqlParameter("@ethics", SqlDbType.Int))
cmd.Parameters("@ethics").Value = rbval
但它不起作用,一直向我提供错误消息并突出显示代码的cmd.ExecuteNonQuery部分。然后我试着玩它,并投入:
Dim rbval As Integer
If RadYes0.Checked Then
rbval = 1
Else
rbval = 2
End If
cmd.Parameters.Add("@TeaAndCoffee", SqlDbType.Text).Value = RadYes0.Text
当我选择“是”时,它确实起作用,但当我选择“否”时,“是”值一直存储在数据库中,我可以看到我在代码中出错的地方,因为它总是从我试图修复的代码中选择“是”。我想知道有没有人有什么建议?下面是完整的代码
Dim Con As SqlConnection
Dim cmd As SqlCommand
Dim recordsAffected As String
Dim cmdstring As String = "INSERT [Event Table](EventTypeID, EventName, VenueName, NumberOfGuests, Date, ClientAddress, WeddingName, BuildingAddress, Canapes, Starter, MainCourse, Dessert, TeaAndCoffee) Values(@EventTypeID, @EventName, @VenueName, @NumberOfGuests, @Date, @ClientAddress, @WeddingName, @BuildingAddress, @Canapes, @Starter, @MainCourse, @Dessert, @TeaAndCoffee)"
Con = New SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\YellowDoor.mdf;Integrated Security=True;User Instance=True")
cmd = New SqlCommand(cmdstring, Con)
cmd.Parameters.Add("@EventTypeID", SqlDbType.Text).Value = EventTypeDD.SelectedValue
cmd.Parameters.Add("@EventName", SqlDbType.Text).Value = EventNametxt.Text
cmd.Parameters.Add("@VenueName", SqlDbType.Text).Value = VenueLoDD.SelectedValue
cmd.Parameters.Add("@NumberOfGuests", SqlDbType.Int).Value = CInt(NumOfGtxt.Text)
cmd.Parameters.Add("@Date", SqlDbType.Int).Value = CInt(DateTxt.Text)
cmd.Parameters.Add("@ClientAddress", SqlDbType.Text).Value = txtAddress.Text
cmd.Parameters.Add("@WeddingName", SqlDbType.Text).Value = txtWedding.Text
cmd.Parameters.Add("@BuildingAddress", SqlDbType.Text).Value = txtBAddress.Text
cmd.Parameters.Add("@Canapes", SqlDbType.Text).Value = txtCanapes.Text
cmd.Parameters.Add("@Starter", SqlDbType.Text).Value = txtStarter.Text
cmd.Parameters.Add("@MainCourse", SqlDbType.Text).Value = txtMainCourse.Text
cmd.Parameters.Add("@Dessert", SqlDbType.Text).Value = txtDessert.Text
Dim rbval As Integer
If RadYes0.Checked Then
rbval = 1
Else
rbval = 2
End If
cmd.Parameters.Add("@TeaAndCoffee", SqlDbType.Text).Value = RadYes0.Text
Con.Open()
recordsAffected = cmd.ExecuteNonQuery
Con.Close()
Response.Redirect("MenuForm.aspx")
End Sub
查看SQL数据库中的表列类型。如果这是一种最符合逻辑的方式,那么它就像一个馅饼一样简单:
cmd.Parameters.Add("@Yourparam", SqlDbType.Bit).Value = IIf (Radyes0.Checked,1,0)
对于字符类型:
cmd.Parameters.Add("@Yourparam", SqlDbType.Char).Value = IIf (Radyes0.Checked,"Y","N")
对于NVarchar类型:
cmd.Parameters.Add("@Yourparam", SqlDbType.Nvarchar).Value = IIf (Radyes0.Checked,"Yes","No")
只要看一下你的桌子设计,你就会知道你需要哪句话。始终使用与数据库相同的数据类型
顺便问一下:这个例子的原因是什么
Dim rbval As Integer
If RadYes0.Checked Then
rbval = 1
Else
rbval = 2
End If
cmd.Parameters.Add("@TeaAndCoffee", SqlDbType.Text).Value = RadYes0.Text
总是将“是”保存到数据库中,是因为radiobutton.text给出了radiobutton的文本标签,我相信您有一个radiobutton表示“是”,一个radiobutton表示“否”,对吗 我在表格中将其设置为文本,最好的方法是什么?然后,与nvarchar相同,但使用文本类型。对于boolean,我会使用bit。事实上,在数据库中将boolean保存为文本类型是最糟糕的选择。单个布尔值的权重很小,但文本类型为存储通常较大的注释保留了大量空间,因此如果表较大,则会浪费大量空间。如果我的答案对您有用,并且您的问题得到解决,请单击“我的答案”下的勾号以奖励我,并向可能浏览类似问题的其他用户明确说明解决方案。