最近三个小时。我搜索了互联网寻找解决问题的方法。我发现了一些,但他们都没有工作(!?)。错误在btnAdd Sub中。我无法使用这种形式的声明:'DECLARE @cds SqlDBType.SmallInt,因为我会得到以下错误:语句在方法/多行lambda中无效。我还使用了他们的声明http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldataadapter.insertcommand%28v=vs.110%29.aspx的形式,但是我又收到了同样的错误。评论部分是我尝试的一切。也许你可以帮我解决这个问题。 :)如何解决“必须声明标量变量@cds”sql?
更新正确的解决方案:
Private Sub btnAdd_Click(sender As Object, e As EventArgs) Handles btnAdd.Click
con.Open()
Dim dr As DataRow
mycmd.CommandText = "insert into studenti(cods, nrmatricol, nume, grupa, datan) values(@cs,@nm,@n,@g,@dn)"
Dim p1 As New SqlParameter
Dim p2 As New SqlParameter
Dim p3 As New SqlParameter
Dim p4 As New SqlParameter
Dim p5 As New SqlParameter
mycmd.Parameters.Clear()
p1.ParameterName = "@cs"
p1.Value = Convert.ToInt16(txtCodS.Text)
mycmd.Parameters.Add(p1)
p2.ParameterName = "@nm"
p2.Value = txtNrMat.Text
mycmd.Parameters.Add(p2)
p3.ParameterName = "@n"
p3.Value = txtNume.Text
mycmd.Parameters.Add(p3)
p4.ParameterName = "@g"
p4.Value = txtGrupa.Text
mycmd.Parameters.Add(p4)
p5.ParameterName = "@dn"
p5.Value = Convert.ToDateTime(txtDataN.Text)
mycmd.Parameters.Add(p5)
mycmd.Connection = con
da1.InsertCommand = mycmd
dr = DataSet1.Tables("studenti").NewRow()
dr("cods") = Convert.ToInt16(txtCodS.Text)
dr("nrmatricol") = txtNrMat.Text
dr("nume") = txtNume.Text
dr("grupa") = txtGrupa.Text
dr("datan") = Convert.ToDateTime(txtDataN.Text)
DataSet1.Tables("studenti").Rows.Add(dr)
da1.Update(DataSet1, "studenti")
UpdateUI()
con.Close()
End Sub
错:
Dim da1 As New SqlClient.SqlDataAdapter
Private Sub btnAdd_Click(sender As Object, e As EventArgs) Handles btnAdd.Click
con.Open()
Dim dr As DataRow
Dim mycmd As New SqlClient.SqlCommand
//Dim mycmd2 As New SqlClient.SqlCommand
//mycmd2.Connection = con
// mycmd2.CommandText = "select* from studenti"
//Dim v(4) As Object
//v(0) = Convert.ToInt16(txtCodS.Text)
//v(1) = txtNrMat.Text
//v(2) = txtNume.Text
//v(3) = txtGrupa.Text
// v(4) = txtDataN.Text
mycmd.CommandText = "insert into studenti (cods,nrmatricol,nume,grupa,datan) values (@cds,@nm,@n,@g,@dn)"
Dim p1 As New SqlClient.SqlParameter
p1.ParameterName = "@cds"
p1.Value = Convert.ToInt16(txtCodS.Text)
//DECLARE @cds SqlDBType.SmallInt
//cmd.Parameters.Clear()
cmd.Parameters.Add(p1)
//cmd.Parameters.Add("@cds", SqlDbType.SmallInt).Value = Convert.ToInt16(txtCodS.Text)
cmd.Parameters.Add("@nm", SqlDbType.VarChar, 10)
cmd.Parameters.Add("@n", SqlDbType.VarChar, 30)
cmd.Parameters.Add("@g", SqlDbType.VarChar, 10)
cmd.Parameters.Add("@dn", SqlDbType.DateTime)
mycmd.Connection = con
da1.InsertCommand = mycmd
dr = DataSet1.Tables("studenti").NewRow()
dr("cods") = Convert.ToInt16(txtCodS.Text)
dr("nrmatricol") = txtNrMat.Text
dr("nume") = txtNume.Text
dr("grupa") = txtGrupa.Text
dr("datan") = Convert.ToDateTime(txtDataN.Text)
DataSet1.Tables("studenti").Rows.Add(dr)
da1.Update(DataSet1, "studenti")
UpdateUI()
con.Close()
End Sub
End Class
请仅向我们展示您的代码的相关部分。 – SLaks
@SLaks好的,我更新了我的代码。 – MathMe
错误的确切文字是什么? – SLaks