jeg har tjekket indholdet og alle "felter" i SQL'en bliver fyldt rigtigt.. og hvis jeg bruger laver en "normal" connection (dvs uden sqlparametre) fungerer det fint.. dvs det gemmes i databasen.
og jeg har også tjekket ManagerID'en og den passer ifht databasen.
jeg har prøvet at arbejde videre med mit SQL Parameter problem.. og nu er jeg kommet videre.. jeg har prøvet at trace problemet, men ved ikke helt se hvad jeg skal kigge efter i Trace Output'et..
@id = 1 @navn = Fixlist @tekst = Fixlisten skal laves færdig. :) @status = ikke lavet UPDATE Fixlist SET navn = @navn,tekst = @tekst,status = @status WHERE ID = @ID
For i = 0 To ins.Parameters.Count - 1 Trace.Write(ins.Parameters(i).ParameterName & " = " & ins.Parameters(i).Value & " " & & ins.Parameters(i).Value.Length) Next i
Imports System Imports System.IO Imports System.Data Imports System.Data.OleDb
Class MainClass
Public Shared Sub Main(ByVal args As String()) Dim con As OleDbConnection = New OleDbConnection ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Database\MSAccess\Test.mdb;User Id=admin;Password=") con.Open Dim cre As OleDbCommand = New OleDbCommand ("CREATE TABLE imgtest (id INTEGER PRIMARY KEY,img OLEObject)", con) cre.ExecuteNonQuery Dim imgfile As Stream = New FileStream ("C:\blue.jpg", FileMode.Open) Dim siz As Integer = imgfile.Length Dim imgdata(siz-1) As Byte imgfile.Read(imgdata, 0, imgdata.Length) imgfile.Close Dim ins As OleDbCommand = New OleDbCommand ("INSERT INTO imgtest VALUES(@id,@img)", con) ins.Parameters.Add("@id", OleDbType.Integer) ins.Parameters.Add("@img", OleDbType.VarBinary) ins.Parameters("@id").Value = 1 ins.Parameters("@img").Value = imgdata ins.ExecuteNonQuery Dim sel As OleDbCommand = New OleDbCommand ("SELECT img FROM imgtest WHERE id = @id", con) sel.Parameters.Add("@id", OleDbType.Integer) sel.Parameters("@id").Value = 1 Dim imgdata2 As Byte() = CType(sel.ExecuteScalar, Byte()) Dim drp As OleDbCommand = New OleDbCommand ("DROP TABLE imgtest", con) drp.ExecuteNonQuery Dim imgfile2 As Stream = New FileStream ("C:\blue2.jpg", FileMode.Create) imgfile2.Write(imgdata2, 0, imgdata2.Length) imgfile2.Close con.Close End Sub End Class
Her kommer et langt og mærkeligt forslag til problemet.
Jeg har 5 felter i databasen:
ID (integer) Navn (Char) Tekst (Char) Dato (date) Status (Char)
Disse viser jeg i en customtemplate i en datagrid. Jeg har også en "rediger" knap som sætter datagrid'en i edittemplate hvor jeg så kan ændre i Navn, Tekst og Status. Dato og ID forbliver labels.
lad os sige at ID indholder 1, navn = 2, tekst = 3, dato (en dato) og status = 4. Når jeg trykker på rediger og kan ændre indholdet så skriver jeg: navn = a, tekst = b og status = c.
Gæt hvad sker.. Id forbliver 1, navn bliver til 1, tekst til a og status til b.
som om den data jeg gemmer bliver lagt i 1 felt ved siden af der hvor det skal.
hvis jeg nu gemmer igen. og denne skriver jeg navn = 9, tekst = 8 og status = 7 så gemmer den det som:
sub binddatagrid() try dim sql as string = "SELECT * from Fixlist"
dataoledb.opendb("futty")
Dim objAdapter as OledbDataAdapter Dim objDataSet as new DataSet() objAdapter = new OledbDataAdapter(SQL, dataoledb.objConn) objAdapter.Fill(objDataSet, "Fixlist")
Dim objDataTabel as DataTable objDataTabel = objDataset.Tables("Fixlist")
dgFixlisten.DataSource = objDataTabel dgFixlisten.DataBind() dataoledb.closedb() catch ex as exception response.write(ex.tostring()) end try end sub
Imports System Imports System.Data Imports System.Data.OleDb
Module Main Sub Main() ' initialize Dim con As OleDbConnection = New OleDbConnection ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Database\MSAccess\Test.mdb") Dim da As OleDbDataAdapter = New OleDbDataAdapter("SELECT * FROM T1", con) Dim cb As OleDbCommandBuilder = New OleDbCommandBuilder(da) Dim ds As DataSet = New DataSet da.Fill(ds, "T1") Dim dt As DataTable = ds.Tables("T1") ' print all rows Dim i As Integer For i = 0 To (dt.Rows.Count - 1) Console.WriteLine(dt.Rows(i).Item("F1") & " " & dt.Rows(i).Item("F2")) Next ' add new row Dim dr As DataRow = dt.NewRow dr.Item("F1") = 12345 dr.Item("F2") = "ABCDE" dt.Rows.Add(dr) ' print all rows For i = 0 To (dt.Rows.Count - 1) Console.WriteLine(dt.Rows(i).Item("F1") & " " & dt.Rows(i).Item("F2")) Next ' write changes back to database da.Update(ds, "T1") con.Close End Sub End Module
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.