Во-первых, извинения, если на мой вопрос ответили, хотя я посмотрел. Во-вторых, я начинающий и следую руководству SQL, которое не является двусторонним: они не отвечают на запросы. Я искал везде, но не могу найти ответ, который я понимаю.
У меня есть .mdf
таблица базы данных с 13 столбцами. Я создал хранимую процедуру, которая работает извне Visual Studio, вызывая функцию exec
.
exec [SeeFirst] [Peter]
Возвращает строку, содержащую Peter
в столбце FirstName
.
Хранимая процедура SQL Server:
CREATE PROCEDURE [dbo].[SeeFirst]
@param1 varchar(50) = 0
AS
SELECT *
FROM Mentor
WHERE Mentor.FirstName = @param1 ;
RETURN 0
и имеет вид называется так:
Dim conString As String
conString = My.Settings.Mentor2020DB
Dim con As New SqlClient.SqlConnection(conString)
con.Open()
Dim param
Select Case ci
Case 1
Dim cmd As New SqlClient.SqlCommand("SeeFirst", con)
param = Trim(txtSearch.Text)
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.Add(New SqlClient.SqlParameter("@param1", param))
Dim adapter As New SqlClient.SqlDataAdapter(cmd)
Dim dataTable As New DataTable()
adapter.Fill(dataTable)
DataGridView1.DataSource = Binder
Binder.DataSource = dataTable
Case = 2
& et c.
Я показываю все вышеизложенное, чтобы дать полную историю того, как я пытаюсь работать.
Сейчас к моей проблеме: у меня есть хранимая процедура с 12 параметрами, которая работает в области создания хранимой процедуры и вставляет новую запись в табе.
Если я выполню
exec [AddNew] [param1,param2, .... param12]
, все работает хорошо. Итак, я доволен хранимой процедурой, которая в основном похожа на описанную выше [SeeFirst]
, но с большим количеством параметров.
Хранимая процедура, которая работает:
CREATE PROCEDURE [dbo].[AddNew]
@FirstName varchar(50) = 0,
@LastName varchar(50),
@Company varchar(50),
@Address varchar(50),
@TDate varchar(50),
@TLength int,
@Miles int,
@Radius int,
@Band int,
@FileName varchar(50),
@TResult varchar(50),
@TNotes varchar(2500)
AS
INSERT INTO Mentor
VALUES (@FirstName, @LastName, @Company, @Address,
@TDate, @TLength, @Miles, @Radius, @Band, @FileName, @TResult, @TNotes)
RETURN 0
Но я не могу заставить мою программу принять эти множественные параметры из моего программного кода.
Private Sub mnuMainAdd_Click(sender As Object, e As EventArgs) Handles mnuMainAdd.Click
' Trying to add a new record
Dim param(0 To 12)
Dim conString As String
conString = My.Settings.Mentor2020DB
Dim con As New SqlClient.SqlConnection(conString)
con.Open()
param(0) = " "
param(1) = txtFirstName.Text
param(2) = txtLastName.Text
param(3) = txtCompany.Text
param(4) = txtAddress.Text
param(5) = txtTDate.Text
param(6) = txtTLength.Text
param(7) = txtMiles.Text
param(8) = txtRadius.Text
param(9) = txtBand.Text
param(10) = txtFileName.Text
param(11) = txtTResult.Text
param(12) = txtTNotes.Text
Dim cmd As New SqlClient.SqlCommand("AddNew", con)
cmd.CommandType = CommandType.StoredProcedure
Dim access
access = "@FirstName", param(1), "@LastName", param(2), "@Company", param(3), "@Address", param(4),
"@param6", param(6), "@param7", param(7), "@param8", param(8), "@param9", param(9), "@param10",
"@param(10), "@param11", param(11), "@param12", param(12)
cmd.Parameters.Add(New SqlClient.SqlParameter(access)
Dim adapter As New SqlClient.SqlDataAdapter(cmd)
Dim dataTable As New DataTable()
adapter.Fill(dataTable)
DataGridView1.DataSource = Binder
Binder.DataSource = dataTable
Если я дал слишком много информации, то извините. Но я так часто читаю здесь, что решение не может быть дано из-за недостатка информации.
Спасибо вам всем за то, что вы прочитали это, и я надеюсь на совет, ведущий к решению.
С уважением,
Пит F