vb.net - ошибка заполнения адаптера данных набором данных

ниже мой код:

myCommand = New SqlCommand("SELECT VisitorID, VisitorName, Skill FROM tblVisitor LEFT JOIN tblSkill ON tblVisitor.SkillID = tblSkill.SkillID", myConnection)
   myAdapter = New SqlDataAdapter(myCommand)
   myAdapter.Fill(myDataSet, "tblVisitor")
   tblView.DataSource = myDataSet.Tables(0)

затем он перехватывает ошибку как Incorrect Syntax near"., которая указывает на myAdapter.Fill(myDataSet, "tblVisitor"), а не на команду Select.

Пожалуйста помоги.


person Tepken Vannkorn    schedule 01.07.2011    source источник
comment
Попробуйте проверить свое утверждение на сервере sql, чтобы узнать, какая часть вашего утверждения неверна. проверьте, существуют ли все ваши столбцы в заявлении и в БД. Ошибка указывает на оператор заполнения, потому что это позиция, в которой будет выполняться ваша команда selectCommand. Так что ошибка должна быть в заявлении.   -  person Pilgerstorfer Franz    schedule 01.07.2011


Ответы (2)


Это нормальное поведение, когда исключение выдается при DataAdapter.Fill, а не при построении SqlCommand. Потому что Fill — это первая точка, в которой ADO.NET будет запрашивать вашу базу данных.

Что следует после «Неправильный синтаксис рядом»? Потому что обычно база данных даст вам подсказку, где найти ошибку в SQL-операторе.

Ваше SQl-утверждение кажется правильным, если ваша модель похожа на эту тестовую модель:

declare  @tblVisitor table(
    VisitorID int,
    VisitorName varchar(100),
    SkillID int
)
declare @tblSkill table(
    SkillID int,
    Skill int
)

INSERT INTO @tblVisitor VALUES(1,'Name1',1);
INSERT INTO @tblVisitor VALUES(2,'Name2',2);
INSERT INTO @tblVisitor VALUES(3,'Name3',3);

INSERT INTO @tblSkill VALUES(1,100);
INSERT INTO @tblSkill VALUES(2,200);
INSERT INTO @tblSkill VALUES(3,300);

SELECT VisitorID, VisitorName, Skill
FROM   @tblVisitor tblVisitor LEFT JOIN
       @tblSkill tblSkill ON tblVisitor.SkillID = tblSkill.SkillID

Результат:

VisitorID   VisitorName  Skill
   1          Name1       100
   2          Name2       200
   3          Name3       300
person Tim Schmelter    schedule 01.07.2011

Вы создали экземпляр для своего набора данных ??

обратитесь к этому

проверьте это

person abhijit    schedule 01.07.2011
comment
конечно, я объявил это как глобальную переменную. Проблема возникает только тогда, когда я меняю свой оператор sql с "SELECT * FROM tblVisitor" на такой вышеприведенный оператор sql. Предыдущий работает хорошо - person Tepken Vannkorn; 01.07.2011