【问题标题】:vb.net - error filling data adapter with datasetvb.net - 使用数据集填充数据适配器时出错
【发布时间】:2011-09-26 20:30:20
【问题描述】:

下面是我的代码:

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") 而不是选择命令。

请帮忙。

【问题讨论】:

  • 尝试在 sql server 上检查你的语句,找出你的语句的哪一部分是不正确的。检查语句中的所有列是否也存在于 db 中。错误指向填充语句,因为这是执行 selectCommand 的位置。所以错误一定在语句中。

标签: vb.net dataset dataadapter


【解决方案1】:

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

参考这个

check this

【讨论】:

  • 当然,我将它声明为全局变量。当我将我的 sql 语句从 "SELECT * FROM tblVisitor" 更改为上述 sql 语句时,就会出现问题。上一个效果很好
【解决方案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

【讨论】:

    猜你喜欢
    • 2014-07-02
    • 1970-01-01
    • 2015-06-21
    • 1970-01-01
    • 2011-10-22
    • 2023-03-20
    • 2014-03-23
    • 2013-12-07
    • 2014-07-03
    相关资源
    最近更新 更多