vb.net - 如何解决错误必须声明标量变量
问题描述
我在 vb.net 中遇到错误。它显示必须声明标量变量“@FieldDeg”。我只能使用 insertSql 而不是 insertSql2 将数据插入数据库,因为它一直在 FieldDeg 显示错误,任何人都可以帮助处理这些代码。非常感谢。这是我的代码。
Imports System.Data.SqlClient
Public Class CV
Dim conn As SqlConnection
Dim cmd As SqlCommand
Dim cmd2 As SqlCommand
Dim Genders() As String = {"Male", "Female"}
Private Sub CV_Load(sender As Object, e As EventArgs) Handles MyBase.Load
cboGender.Items.AddRange(Genders)
cboGender.DropDownStyle = ComboBoxStyle.DropDown
cboGender.SelectedIndex = 0
OpenFileDialog1.Filter = "Image Files (*.bmp;*.jpg;*.jpeg;*.png)|*.BMP;*.JPG;*.JPEG;*.PNG"
txtField1.Enabled = False
txtMajor1.Enabled = False
txtInstitute1.Enabled = False
txtGrade1.Enabled = False
mskGradDate1.Enabled = False
txtField2.Enabled = False
txtMajor2.Enabled = False
txtInstitute2.Enabled = False
txtGrade2.Enabled = False
mskGradDate2.Enabled = False
End Sub
Private Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click
Dim insertSql As String
Dim insertSql2 As String
conn = New SqlConnection("Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\Assignment.mdf;Integrated Security=True;Connect Timeout=30")
insertSql = "Insert into [Personal Information] ([Full Name], [Address], [Phone Number], [Mobile Number], [Email], [Age], [Date of Birth], [Nationality], [Gender], [Marital Status], [IC Or Passport], [Permanent Residence]) Values (@Fullname, @Address, @Phone, @Mobile, @Email, @Age, @DOB, @Nationality, @Gender, @Marital, @IC, @Residence)"
insertSql2 = "Insert into [Education Background] ([Field of Study Deg], [Major Deg], [Institute Or University Deg], [Grade Deg],[Graduation Date Deg], [Field of Study Dip], [Major Dip], [Institute Or University Dip], [Grade Dip], [Graduation Date Dip]) Values (@FieldDeg, @MajorDeg, @InstituteDeg, @GradeDeg, @GradDateDeg, @FieldDip, @MajorDip, @InstituteDip, @GradeDip, @GradDateDip)"
If (txtFullname.Text = "" Or txtAddress.Text = "" Or mskPhone.Text = "" Or mskMobile.Text = "" Or txtEmail.Text = "" Or mskAge.Text = "" Or mskAge.Text = "" Or mskDOB.Text = "" Or txtNationality.Text = "" Or txtMarital.Text = "" Or txtIC.Text = "" Or txtPR.Text = "") Then
MessageBox.Show("Please enter all information for Curriculum Vitae.", "Data Field Cannot Be Empty", MessageBoxButtons.OK, MessageBoxIcon.Error)
Else
'open the database connection
conn.Open()
'create the command object
cmd = New SqlCommand(insertSql, conn)
cmd.Parameters.AddWithValue("@Fullname", txtFullname.Text)
cmd.Parameters.AddWithValue("@Address", txtAddress.Text)
cmd.Parameters.AddWithValue("@Phone", mskPhone.Text)
cmd.Parameters.AddWithValue("@Mobile", mskMobile.Text)
cmd.Parameters.AddWithValue("@Email", txtEmail.Text)
cmd.Parameters.AddWithValue("@Age", mskAge.Text)
cmd.Parameters.AddWithValue("@DOB", mskDOB.Text)
cmd.Parameters.AddWithValue("@Nationality", txtNationality.Text)
cmd.Parameters.AddWithValue("@Gender", cboGender.Text)
cmd.Parameters.AddWithValue("@Marital", txtMarital.Text)
cmd.Parameters.AddWithValue("@IC", txtIC.Text)
cmd.Parameters.AddWithValue("@Residence", txtPR.Text)
cmd2 = New SqlCommand(insertSql2, conn)
cmd.Parameters.AddWithValue("@FieldDeg", txtField1.Text)
cmd.Parameters.AddWithValue("@MajorDeg", txtMajor1.Text)
cmd.Parameters.AddWithValue("@InstituteDeg", txtInstitute1.Text)
cmd.Parameters.AddWithValue("@GradeDeg", txtGrade1.Text)
cmd.Parameters.AddWithValue("@GradDateDeg", mskGradDate1.Text)
cmd.Parameters.AddWithValue("@FieldDip", txtField2.Text)
cmd.Parameters.AddWithValue("@MajorDip", txtMajor2.Text)
cmd.Parameters.AddWithValue("@InstituteDip", txtInstitute2.Text)
cmd.Parameters.AddWithValue("@GradeDip", txtGrade2.Text)
cmd.Parameters.AddWithValue("@GradDateDip", mskGradDate2.Text)
'executes the INSERT SQL statement
Dim status As Integer = cmd.ExecuteNonQuery()
Dim status2 As Integer = cmd2.ExecuteNonQuery()
If status > 0 And status2 > 0 Then
MessageBox.Show("Curriculum Vitae has been recorded successfully", "CV Recorded", MessageBoxButtons.OK, MessageBoxIcon.Information)
Else
MessageBox.Show("Curriculum Vitae cannot be recorded. Please check the cv details.", "CV Record Failed", MessageBoxButtons.OK, MessageBoxIcon.Error)
End If
conn.Close() 'close the connection
End If
End Sub
Private Sub btnBrowse_Click(sender As Object, e As EventArgs) Handles btnBrowse.Click
OpenFileDialog1.ShowDialog()
Pic.ImageLocation = OpenFileDialog1.FileName
End Sub
Private Sub chkDegree_CheckedChanged(sender As Object, e As EventArgs) Handles chkDegree.CheckedChanged
If chkDegree.Checked Then
txtField1.Enabled = True
txtMajor1.Enabled = True
txtInstitute1.Enabled = True
txtGrade1.Enabled = True
mskGradDate1.Enabled = True
Else
txtField1.Enabled = False
txtMajor1.Enabled = False
txtInstitute1.Enabled = False
txtGrade1.Enabled = False
mskGradDate1.Enabled = False
End If
End Sub
Private Sub chkDiploma_CheckedChanged(sender As Object, e As EventArgs) Handles chkDiploma.CheckedChanged
If chkDiploma.Checked Then
txtField2.Enabled = True
txtMajor2.Enabled = True
txtInstitute2.Enabled = True
txtGrade2.Enabled = True
mskGradDate2.Enabled = True
Else
txtField2.Enabled = False
txtMajor2.Enabled = False
txtInstitute2.Enabled = False
txtGrade2.Enabled = False
mskGradDate2.Enabled = False
End If
End Sub
End Class
解决方案
顺便说一句,您正在“检查”子例程可以简化如下:
Private Sub chkDiploma_CheckedChanged(sender As Object, e As EventArgs) Handles chkDiploma.CheckedChanged
txtField2.Enabled = chkDiploma.Checked
txtMajor2.Enabled = chkDiploma.Checked
txtInstitute2.Enabled = chkDiploma.Checked
txtGrade2.Enabled = chkDiploma.Checked
mskGradDate2.Enabled = chkDiploma.Checked
End Sub
推荐阅读
- node.js - 如何在“module.exports”中导出多个参数?
- css - 在 Razor 视图中使用 switch-case 语句选择类
- python - TensorFlow 2 中的 Softmax 和 Sigmoid 身份
- blueprism - Blue Prism 如何计算文本日期时间?
- android - 蓝牙macaddress是不同的地址
- python - 在 python 中,如果 api url 在 csv 文件中,则无法发送 GET 请求
- javascript - 将全局变量作为函数中的参数进行操作
- python - 当for循环包含太多视频时出现内存错误(python,psychopy函数visual.MovieStim3)
- cordova - Ionic - 检测设备是 Ipad
- angular - 离子:输入字段中的值不会与 ngControl 一起显示