Я использую следующий код, чтобы попытаться вернуть результаты из таблицы базы данных SQL ServerДобавление параметров дает ошибку - необходимо объявить скалярную переменную «@variable»
MySqlCommand.CommandText = "SELECT * FROM dbo.MyTable WHERE [My Id] = @variable";
MySqlCommand.Parameters.Add("@variable", SqlDbType.Int).Value = GetsMyId(this.Mycombobox.SelectedItem.ToString());
Я попытался с помощью .Parameters. AddWithValue ("@ переменная", значение); но я прочитал о недостатках и решил использовать этот метод вместо этого. Код не работает ни с одним из них. Возврат ошибки «Должен объявить скалярную переменную« @variable »'
Я не уверен, что мне не хватает, так как у меня есть рабочая версия, которая достигает чего-то подобного. В этом случае контекст отличается, однако, с этим кодом ниже оригинального
//Line that fixes it (added at this point) for anyone else that encounters the issue.
//MySqlConnection.connection = MyConnection;
System.Data.SqlClient.SqlDataAdapter Adapter = new System.Data.SqlClient.SqlDataAdapter(MySqlCommand.CommandText, conn.ConnectionString);
DataTable MyDataTable = new DataTable();
Adapter.Fill(MyDataTable);
с ошибкой бросают в последней строке Adapter.Fill(MyDataTable)
Есть ли что-то глупо, что я пропустил или есть какая-то несовместимость я «Не знаю, между добавлением значений параметров и DataAdapters?
Если 'GetsMyId' может вернуть нулевое значение, вы получите эту ошибку. Вы должны убедиться, что параметры имеют ненулевое значение. вы можете использовать 'DBNull.Value' вместо' null' в C# для представления нулевого значения в SQL. –
GetsMyId объявлен как частный метод int, насколько я знаю, он не может вернуть нулевое значение? – user2874417
Что 'GetsMyId (this.Mycombobox.SelectedItem.ToString())' точно возвращается? Вы отлаживали свой код и видели его? Также вы пытаетесь означать '..Add (« @ variable », SqlDbType.Int) .Value..' вместо этого? –