visual-studio - 未填写一个文本框时解决方案崩溃
问题描述
目前,我正在尝试编写代码以将新学生添加到数据库表中。但是当按下提交时没有填充其中一个文本框时,解决方案会崩溃。请告诉我一种编写代码的方法:
Imports System.Data.OleDb
Public Class AddNewStudent
Dim cnnOLEDB As New OleDbConnection
Dim cmdInsert As New OleDbCommand
Dim con = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\ASSIGNMENT\vbnassignmentfinal.accdb;"
Dim cmdDelete As New OleDbCommand
Dim cmdUpdate As New OleDbCommand
Dim cmdSearch As New OleDbCommand
Private Sub AddNewStudentSD_Load(sender As Object, e As EventArgs) Handles MyBase.Load
cnnOLEDB.ConnectionString = con
cnnOLEDB.Open()
End Sub
Private Sub btnClear_Click(sender As Object, e As EventArgs) Handles btnClear.Click
txtsem.ResetText()
txtsfn.ResetText()
txtsid.ResetText()
txtsln.ResetText()
txtsph.ResetText()
txtint.ResetText()
cmbgen.ResetText()
End Sub
Private Sub btnHome_Click(sender As Object, e As EventArgs) Handles btnhome.Click
UserHomepage.Show()
Me.Hide()
End Sub
Private Sub btnSubmit_Click(sender As Object, e As EventArgs) Handles btnsubmit.Click
cmdInsert.CommandText = "Insert into student Values(" + txtsid.Text + ",'" + txtint.Text + "','" + txtsfn.Text + "','" + txtsln.Text + "', '" + cmbgen.Text + "', " + txtsph.Text + ", '" + txtsem.Text + "');"
cmdInsert.CommandType = CommandType.Text
cmdInsert.Connection = cnnOLEDB
cmdInsert.ExecuteNonQuery()
MessageBox.Show("Are you sure you want to proceed?", "Proceed", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
If DialogResult.Yes Then
UserHomepage.Show()
Me.Hide()
ElseIf DialogResult.No Then
Me.Show()
UserHomepage.Hide()
End If
End Sub
End Class
解决方案
我认为 Visual StudioNZ function
在其 VBA 环境中没有 MS-Access 那样的功能。
您可以创建自己的函数来模仿它:
Public Shared Function Nz(ByVal Value As Object, Optional ByVal Default as Object = String.Empty) As Object
If Value Is Nothing OrElse IsDBNull(Value) Then
Return Default
Else
Return Value
End If
End Function
然后修改您的动态 SQL 代码行以将任何 Null 文本字段转换为空字符串。
cmdInsert.CommandText = "Insert into student Values(" + NZ(txtsid.Text,"") + _
",'" + NZ(txtint.Text,"") + "','" + NZ(txtsfn.Text,"") + "','" + _
NZ(txtsln.Text,"") + "', '" + NZ(cmbgen.Text,"") + "', '" + NZ(txtsph.Text,"") _
+ "', '" + NZ(txtsem.Text,"") + "');"
推荐阅读
- php - 从许多子文件夹中随机设置背景图像
- r - 如何检测单变量异常值并在新列中标记为 TRUE 或 FALSE
- google-apps-script - 如何使用 Google Sheets (v4) API 修改依赖于特定单元格的特定数据行?
- c# - Automapper 列表到字符串忽略奇怪的值
- javascript - Javascript cloneNode() 不能按预期使用列表?
- javascript - 使有状态的 React 组件无法协同工作
- ruby-on-rails - Rails 创建具有许多关联的活动记录
- flutter - Flutter 从父级调用子状态方法
- javascript - 将承诺分配给变量并在链中返回与仅返回承诺调用不同吗?
- php - Html 表单 - 有没有办法在 &#xHHHH; 之间进行选择 和 &#DDDD; 格式?