vb.net - ошибка при заполнении адаптера данных набором данных - PullRequest
0 голосов
/ 01 июля 2011

ниже - мой код:

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"), а не команду выбора.

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

Ответы [ 2 ]

1 голос
/ 01 июля 2011

Это нормальное поведение, когда исключение выдается на 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
0 голосов
/ 01 июля 2011

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

укажите это

отметьте это

...