2016-04-21 8 views
0

Ich habe ein Problem, das Bild in der SQL_database in vb.net.Enter als eine Datei ohne ein Problem aufzuzeichnen, aber ich kann nicht in SQL schreiben. ABCreateNewBarcode ist eine PictureBox. Ich habe ein Problem, BackgroundImage von PictureBox zu nehmen, um in SQL zu speichern. Ich spare Background in BarcodeImg Ordner, aber ich kann nichtBild in der SQL_database in vb.net

Private Sub btnSaveBarcode_Click(sender As Object, e As EventArgs) Handles btnSaveBarcode.Click 
    'Create Image Object 
    Dim ABCreateNewBarcode As Object 
    ABCreateNewBarcode = CreateObject("BARCODE.BarcodeCtrl.1") 
    ABCreateNewBarcode.Text = txtNewBarcode.Text 
    ABCreateNewBarcode.typename = "Code128" 
    DirBarcodeImg = Application.StartupPath & "\barcodeimg" 
    'Save Image 
    If txtNewBarcode.Text = "" Then 
     MsgBox("Click the Create Button to create a New Barcode") 

    ElseIf Directory.Exists(DirBarcodeImg) = False Then 
     Call Directory.CreateDirectory(DirBarcodeImg) 

    Else 
     ABCreateNewBarcode.SaveAsBySize(DirBarcodeImg & "\" & txtInsertPartName.Text & ".png", 300, 130) 

     Dim ImageToSave As Image = ABCreateNewBarcode.BackgroundImage 

     Dim ms As New MemoryStream 
     ImageToSave.Save(ms, ImageToSave.RawFormat) 
     Dim buffer As Byte() = MS.GetBuffer() 

     'Add SQL Parameters 
     SQL.AddParam("@name", txtInsertPartName.Text) 
     SQL.AddParam("@image", buffer) 

     'Run Imsert Command 
     SQL.ExecQuery("INSERT INTRO information (PartName,BarcodeImg) " & 
         "VALUES (@name,@image) ") 
    End If 

End Sub 
+0

diese ist nicht das Problem. Das ist ein Fehler - MissingMemberException - Eine nicht behandelte Ausnahme des Typs 'System.MissingMemberException' ist in Microsoft.VisualBasic.dll aufgetreten. –

+2

Ein Teil dieses Codes zeigt einige sehr schlechte Angewohnheiten ... Überbleibsel aus der vb6-Ära, die für den vb.net-Code aktiv schädlich sind. –

Antwort

0

Nach chaging Sie anfordern "IN" anstelle von "INTRO" versuchen, diese Linie in SQl sparen:

SQL.Parameters.AddWithValue("@image", txtInsertPartName.Text).SqlDbType = SqlDbType.Image 

und ersetzen:

Dim ms As New MemoryStream 
ImageToSave.Save(ms, ImageToSave.RawFormat) 
Dim buffer As Byte() = MS.GetBuffer() 

durch diese:

Dim fs As FileStream 
    fs = New FileStream(imagename, FileMode.Open, FileAccess.Read) 
    'a byte array to read the image 
    Dim picbyte As Byte() = New Byte(fs.Length - 1) {} 

    fs.Read(picbyte, 0, System.Convert.ToInt32(fs.Length)) 
    fs.Close() 
    'open the database using odp.net and insert the data 
    Dim buffer As Byte() =picbyte