2016-08-20 13 views
-1

Microsoft Visual Studio 2010 Expressを使用していますが、VB.NETを使用して登録フォームを作成しようとしています。これまでのコードです:INSERT INTO文で構文エラーが発生する

Private Sub insrt() 
    If picStr = vbNullString Then 
     'save the current image default (noimage) 
     picImage.Image.Save(".png", Imaging.ImageFormat.Png) 
     'reload current " Noimage" to a binary 
     picStr = Application.StartupPath + (".\noimage.png") 
    End If 

    'set image object to value 
    IMG = (Nothing) 
    IMG = Image.FromFile(picStr) 
    'fill mystream into image binary 
    MyStream = New MemoryStream 
    IMG.Save(MyStream, Imaging.ImageFormat.Png) 

    Dim gen As String = String.Empty 
    If rbtnMale.Checked = True Then 
     gen = "Male" 
    ElseIf rbntFemale.Checked = True Then 
     gen = "Female" 
    End If 

    Dim dob As String = cboDay.Text & "/" & cboMonth.Text & "/" & txtYr.Text 

    Dim con As New OleDbConnection(cnSettings) 
    con.Open() 
    Try 
     If txtID.Text = "" Then 
      MsgBox("Please Enter year enrolled and Generate ID for this Student") 
      Exit Sub 
     Else 
      Dim cmd As New OleDbCommand 
      cmd.Connection = con 
      cmd.CommandText = "INSERT into tbEnroll(StudentID,Firstname,Lastname,Gender,DOB,Hometown,Region,Sess,Batch,Class,GFirstname,GLastname,GTel,GEmail,GResidence,DateEnroll,Picture) values ('" & txtID.Text & "','" & txtFN.Text & "','" & txtLN.Text & "','" & gen & "','" & dob & "','" & txtHomeTWN.Text & "','" & cboRegion.Text & "','" & cboSession.Text & "','" & txtBatch.Text & "','" & cboClass.Text & "','" & txtGfirst.Text & "','" & txtLastnm.Text & "','" & txtTel.Text & "','" & txtEmail.Text & "','" & txtRes.Text & "','" & DateTimePicker1.Text & "', @img ,)" 
      cmd.Parameters.AddWithValue("@img", OleDbType.VarBinary).Value = MyStream.GetBuffer 
      cmd.ExecuteNonQuery() 
      cmd.Dispose() 

      MyStream.Dispose() 
      MyStream = Nothing 
      MsgBox("Enrollment Done successfully", , "Enrollment") 
      cleartxt() 
     End If 
    Catch ex As Exception 
     MsgBox(ex.Message) 
    End Try 

End Sub 

この解決策は何ですか?

+1

*「Class」は予約語で、もう1つはSQL paramを使用していないそれで、ひどいSQLスープには、あまりにも多くの、あるいは、あまりにも多くのダニが存在する可能性があります。さらに、すべてを文字列として渡すことによって不注意なデータ型変換が発生します。 – Plutonix

答えて

0

すべてのSQLパラメータをSQL文に連結するのではなく、パラメータを使用してコードを後で読みやすくする必要があります。また

私は問題は、@img、)」ここにあなたが挿入する別のパラメータを持っていないので、@img後にコンマを持つべきではありません参照してください。また

Plutonixは、上記の言ったように、あなたがすべきではありませんすべてを文字列に変換してSQLに値を入力してください。

0

&をクエリ・ビューのAccess SQL Designにコピーしてみてください。データベースに問題がある場合

関連する問題