C # SQLDADADAPTER.FILL дает ошибку о преобразовании данных при прохождении параметра DataTable

StackOverflow https://stackoverflow.com/questions/3513740

Вопрос

Я пытаюсь заполнить DataTable, используя SQLDataAdapter в C #. Я не очень знаком с объектами, и в основном работаю от шаблона чужого кода, чтобы попытаться выяснить, как это работает. Вот основная форма.

        SqlCommand command = new SqlCommand(@"SELECT * FROM tblEmployees WHERE Name = " + firstSSN,connection);

        SqlDataAdapter adapter = new SqlDataAdapter(command.CommandText.ToString(), connection.ConnectionString.ToString());

        SqlCommandBuilder cmdBuilder = new SqlCommandBuilder(adapter);
        DataTable table = new DataTable();
        table.Locale = System.Globalization.CultureInfo.InvariantCulture;
        adapter.Fill(table);

И это отлично работает на их форме. Я пытался делать то же самое с моим, но получил ошибку о попытке преобразовать nvarchar в столбцу типа данных int. Я просмотрел через MSDN и попробовал следующее: 1) Добавление столбцов к DataTable с соответствующими именами / типами / первичными ключами от TBlemploys. 2) Добавление Tablemappa RateAdAppter, хотя я не на 100% уверен, что у меня есть синтаксис на этой части справа. Я делаю:

adapter.TableMappings.Add("work", "dbo.tblEmployees");

для этого. DataTable называется «Работа», но я не уверен, если у меня есть синтаксис справа, я помещаю в название таблицы, как оно появляется в SQL Server Management Studio, но не знаю, как я проверяет, правильно ли это связано.

Спасибо за любую помощь, которую вы можете предоставить. Я избил голову на это до такой степени, что я на грани приближаясь к своей цели совершенно другой путь и бросая то, что у меня есть.

Это было полезно?

Решение

На первый взгляд, когда смотрите на первую строку вашего кода, посмотрите, где firstSSN является:

@"Select * From tblEmployees WHERE Name = " + firstSSN

Я предлагаю, что «имя» - это поле NVARCHAR, которое ссылается на сообщение об ошибке, и если FirstSn является только целым значением, попробуйте разместить «Марки» вокруг FirstSn, как это:

@"Select * From tblEmployees WHERE Name = '" + firstSSN + "'"

В противном случае убедитесь, что тип поля «Имя» соответствует типу параметра, который вы передаете в вашу команду. Скорее всего, это просто проблема типа данных.

Одна рекомендация у меня для вас - я только начал экспериментировать с Linq на днях, и найдите его довольно удобно, чтобы использовать для вытягивания, манипулирования и фильтрацией данных в простой в использовании набор записей. Есть все виды документации, доступные на том, как выполнить запросы с LINQ, поэтому посмотрите, если у вас есть несколько минут. Надеюсь это поможет.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top