2016-05-07 6 views
1
cn.Open() 
    Dim query As String 
    query = "INSERT INTO Documents(AdmissionNumber,FullName,LeavingCertificate,KCPEResultSlip,BirthCertificate,MedicalCertificate,ParentOrGuardianPhoto,ParentGuardianIDFront,ParentGuardianIDBack,AnyOtherDocument) VALUES('" & Tbx1.Text & "','" & Tbx2.Text & "', @LeavingCertificate,@KCPEResultSlip,@BirthCertificate,@MedicalCertificate,@ParentOrGuardianPhoto,@ParentGuardianIDFront,@ParentGuardianIDBack,@AnyOtherDocument)" 
    cmd = New SqlCommand(query, cn) 
    cmd.Parameters.Add(New SqlClient.SqlParameter("@LeavingCertificate", SqlDbType.Image)).Value = IO.File.ReadAllBytes(OpenFileDialog1.FileName) 
    cmd.Parameters.Add(New SqlClient.SqlParameter("@KCPEResultSlip", SqlDbType.Image)).Value = IO.File.ReadAllBytes(OpenFileDialog2.FileName) 
    cmd.Parameters.Add(New SqlClient.SqlParameter("@BirthCertificate", SqlDbType.Image)).Value = IO.File.ReadAllBytes(OpenFileDialog3.FileName) 
    cmd.Parameters.Add(New SqlClient.SqlParameter("@MedicalCertificate", SqlDbType.Image)).Value = IO.File.ReadAllBytes(OpenFileDialog4.FileName) 
    cmd.Parameters.Add(New SqlClient.SqlParameter("@ParentOrGuardianPhoto", SqlDbType.Image)).Value = IO.File.ReadAllBytes(OpenFileDialog5.FileName) 
    cmd.Parameters.Add(New SqlClient.SqlParameter("@ParentGuardianIDFront", SqlDbType.Image)).Value = IO.File.ReadAllBytes(OpenFileDialog6.FileName) 
    cmd.Parameters.Add(New SqlClient.SqlParameter("@ParentGuardianIDBack", SqlDbType.Image)).Value = IO.File.ReadAllBytes(OpenFileDialog7.FileName) 
    cmd.Parameters.Add(New SqlClient.SqlParameter("@AnyOtherDocument", SqlDbType.Image)).Value = IO.File.ReadAllBytes(OpenFileDialog8.FileName) 

    Reader = cmd.ExecuteReader 
    MsgBox("Students' Documents Added Successfully to The Regista.", MsgBoxStyle.Information + MsgBoxStyle.OkOnly) 
    Btn9_Click(sender, e) 


End Sub 

'こんにちは仲間。あなたは上のこのコードを参照してください?この項目(AnyOtherDocument)はオプションです。ユーザーはそれを提供することも提供することもできます。しかし、提供されていない場合、例外エラーが発生しています。これをどうすれば処理できますか?FileNotFound例外の処理

答えて

0

File.Existsで確認してください。ファイルが存在しない場合は、DBNull.Valueをにパラメータを設定しそれ以外の方法では、ファイル

Dim exists = File.Exists(OpenFileDialog8.FileName) 

..... 
cmd.Parameters.Add(New SqlClient.SqlParameter(_ 
    "@AnyOtherDocument", SqlDbType.Image)).Value _ 
    = If(exists, IO.File.ReadAllBytes(OpenFileDialog8.FileName), _ 
        DBNull.Value) 

を読んで、あなたは画像値のすべてのパラメータを使用している、なぜあなたは2のためにも利用していません文字列の値ですか?パラメータの有用性は、渡すべき値のDataTypeに結びついていません。あなたはSql Injectionと解析の問題

query = "INSERT INTO Documents " & _ 
"(AdmissionNumber,FullName,LeavingCertificate,KCPEResultSlip," & _ 
"BirthCertificate,MedicalCertificate,ParentOrGuardianPhoto," & _ 
"ParentGuardianIDFront,ParentGuardianIDBack,AnyOtherDocument) " & _ 
"VALUES(@admnum, @fullname, @LeavingCertificate,@KCPEResultSlip, " & _ 
"@BirthCertificate,@MedicalCertificate,@ParentOrGuardianPhoto," & _ 
"@ParentGuardianIDFront,@ParentGuardianIDBack,@AnyOtherDocument)" 

cmd = New SqlCommand(query, cn) 
cmd.Parameters.Add("@admnum", SqlDbType.NVarChar).Value = Tbx1.Text 
cmd.Parameters.Add("@fullname", SqlDbType.NVarChar).Value = Tbx2.Text 
cmd.Parameters.Add("@LeavingCertificate", SqlDbType.Image).Value = IO.File.ReadAllBytes(OpenFileDialog1.FileName) 
.... and so on with all the other parameters .... 
+0

スティーブはこの中でとても新しいです避けるために、すべての値のためにそれらを使用します。どのように私はあなたがそのコードを書き換えて、それを置いている方法で書き直して、私がここに投稿することができれば幸いです。 –

+0

接続を開くためにファイルが存在するかどうかを確認するための行を追加しました。次に、@AnyOtherDocumentパラメータを作成する行を変更しました。ここではっきりしないことは何ですか? – Steve

+0

これは大丈夫ですが、実際には完全に機能しています。あなたが私のすべての画像値にパラメータを使用していると私に言ったと言っています。私はこれを行うより良い方法はありますか? –