2011-07-01 2 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) 

それはそれはmyAdapter.Fill(myDataSet, "tblVisitor")ないSelectコマンドを指しているIncorrect Syntax near".としてエラーをキャッチ。

助けてください。

+1

見つけるために、SQL Serverであなたの文をチェックしてみてくださいあなたの声明のどの部分がライトではないか。 check文の中のすべてのカラムがdbにも存在するかどうかをチェックします。このエラーは、selectCommandが実行されるときの位置であるため、fillステートメントを指しています。そのため、エラーはステートメント内になければなりません。 –

答えて

1

を参照してください。 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

あなたのデータセットのインスタンスを作成しましたか?

は、それは例外がSqlCommandオブジェクトを構築する上でDataAdapter.Fillずにスローされることは正常な動作です。この

check this

+0

もちろん、私はそれをグローバル変数として宣言しました。この問題は、SQL文を '' SELECT * FROM tblVisitor ''から上記のSQL文に変更すると発生します。前の方がうまくいく –