帮助错误:ExecuteNonQuery:Connection属性尚未初始化。 [英] Help with Error: ExecuteNonQuery: Connection property has not been initialized.
问题描述
我正在尝试写入数据库。我现在已经24小时了,真的很累。我以至少5种不同的方式重写了这段代码,但仍然是同样的错误。有人可以告诉我有什么问题以及如何解决它吗?
谢谢!代码如下:
Imports
System.Data.SqlClient
Public
Class NewAccount
Dim myConnection As OleDb.OleDbConnection
Dim myCommand As SqlCommand
Dim ra As 整数
< font color ="#0000ff"size = 2> 私人 Sub btnNew_Click( < font color ="#0000ff"size = 2> ByVal sender As System.Object, ByVal e As System.EventArgs) 句柄 btnNew.Click
Dim sFirst,sLast As String
Dim sAddress,sCity,sState,sZIP As 字符串
Dim sCCNum,sCCType,sCCM onth,sCCYear As String
Dim sEmail,sPass As String
sFirst = txtFirst.Text
sLast = txtLast.Text
sAddress = txtAddress.Text
sCity = txtCity.Text
sState = cmbState.SelectedText
sZIP = txtZIP.Text
sCCNum = txtCCNum.Text
sCCType = cmbType.SelectedText
sCCMonth = txtMM.Text
sCCYear = txtYYYY.Text
sEmai l = txtEmail.Text
sPass = txtPss.Text
myConnection = 新 OleDb.OleDbConnection( " Provider = Microsoft.ACE .OLEDB.12.0;数据源= | DataDirectory | \FinalAsignment.accdb" )
myConnection.Open()
myCommand = 新 SqlCommand( " INSERT INTO Customer VALUES sFirst,sLast,sAddress,sCity,sState,sZIP,sCCNum,sCCType,sCCMonth,sCCYear,sEmail,sPass" )
ra = myCommand.ExecuteNonQuery()
MessageBox.Show( " New Row Inserted" & ra)
myConnection.Close()
< font color ="#0000ff"size = 2>
结束 Sub
结束 Class
您的INSERT SQL语句将无法识别任何变量,因为它们不在SQL语句范围内。您不能引用SQL语句中的任何变量,并且需要使用下一类代码使用参数传递值
myCommand = 新 SqlCommand(" INSERT INTO Customer VALUES(?,?,?,?,?,?,?,?,?,?, ?,?" )
myCommand .Parameters.Add(" sFirst",OleDbType.VarChar,255,sFirst )
myCommand .Parameters.Add(" sLast",OleDbType.VarChar,255,sLast)
.......这里添加其他值
ra = myCommand.ExecuteNonQuery()
创建参数时需要小心,因为他们需要按照与SQL语句中显示的顺序完全相同的顺序创建
I am trying to write to a database. I been at this for now over 24 hours and really am getting tired. I re-wrote this code at least 5 different ways and still the same error. Can someone please tell me what is wrong and how I can fix it?
Thanks! Code is below:
Imports
System.Data.SqlClient
Public
Class NewAccount
Dim myConnection As OleDb.OleDbConnection
Dim myCommand As SqlCommand
Dim ra As Integer
Private Sub btnNew_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNew.Click
Dim sFirst, sLast As String
Dim sAddress, sCity, sState, sZIP As String Dim sCCNum, sCCType, sCCMonth, sCCYear As String Dim sEmail, sPass As String
sFirst = txtFirst.Text
sLast = txtLast.Text
sAddress = txtAddress.Text
sCity = txtCity.Text
sState = cmbState.SelectedText
sZIP = txtZIP.Text
sCCNum = txtCCNum.Text
sCCType = cmbType.SelectedText
sCCMonth = txtMM.Text
sCCYear = txtYYYY.Text
sEmail = txtEmail.Text
sPass = txtPss.Text
myConnection = New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\FinalAsignment.accdb")
myConnection.Open()
myCommand = New SqlCommand("INSERT INTO Customer VALUES sFirst, sLast, sAddress, sCity, sState, sZIP, sCCNum, sCCType, sCCMonth, sCCYear, sEmail, sPass")
ra = myCommand.ExecuteNonQuery()
MessageBox.Show("New Row Inserted" & ra)
myConnection.Close()
End Sub
End Class
Your INSERT SQL statement will not recognize any variables, since they are outside of SQL statement scope. You cannot refer to any variables in your SQL statement and need to pass values to use using parameters using next kind of code
myCommand = New SqlCommand("INSERT INTO Customer VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?")
myCommand .Parameters.Add("sFirst", OleDbType.VarChar, 255, sFirst)
myCommand .Parameters.Add("sLast", OleDbType.VarChar, 255, sLast)
....... Add other values here
ra = myCommand.ExecuteNonQuery()
You need to be careful when you create parameters since they need to be created in exact same order as they appear in your SQL statement
这篇关于帮助错误:ExecuteNonQuery:Connection属性尚未初始化。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!