2011-07-01 43 views
0

是我的代码: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")不选择命令。

请帮忙。

+1

测试一下语句在SQL Server中找到看看你的陈述的哪一部分不是很好。检查如果语句中的所有列都存在db中。错误指向fill语句,因为这是执行selectCommand时的位置。所以错误必须在声明中。 –

回答

1

这是一个正常行为的异常被DataAdapter.Fill,而不是建设的SqlCommand抛出。因为Fill是ADO.NET将查询数据库的第一个点。

“附近的语法不正确”后面是什么?因为通常数据库会给你一个提示,在SQL-Statement中找到错误。

你的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

您是否为数据集创建了实例?

请参阅本

check this

+0

当然,我宣称它是一个全局变量。只是当我将我的sql语句从''SELECT * FROM tblVisitor'''更改为上述sql语句时发生问题。前一个很好 –