30. marts 2009 - 10:16
Der er
7 kommentarer og 1 løsning
Database konvertering
Hey, Jeg har nogle data som jeg skal have overført fra en MySql tabel via en Console app. Jeg har dog et par enkelte problemer... 1. Jeg kan ikke umiddelbart finde en passende datatype i MSSQL2008 til at kopiere MySql Blob over i. 2. Jeg kan ikke få min SqlCommand til at acceptere at en DateTime parameter kan være null - selvom alle felter i MSSQL har allow null. Ex.: MSCmd.Parameters.Add("@endato", SqlDbType.DateTime).Value = !OraRdr.IsDBNull(OraRdr.GetOrdinal("endato")) ? OraRdr.GetDateTime(OraRdr.GetOrdinal("endato")) : null; Har i styr på det? :)
Annonceindlæg fra Computerworld
30. marts 2009 - 10:27
#1
1. En blob i Sql Server hedder "Image". Ikke spørg mig hvorfor! Tydeligvis havde Microsoft ikke fantasi til at forestille sig andre brugsområde til en BLOB, end billeder. 2. I stedet for at sætte kolonnen til NULL, prøv at sætte den DBNull.Value: MSCmd.Parameters.Add("@endato", SqlDbType.DateTime).Value = !OraRdr.IsDBNull(OraRdr.GetOrdinal("endato")) ? OraRdr.GetDateTime(OraRdr.GetOrdinal("endato")) : DBNull.Value;
30. marts 2009 - 10:44
#2
Jeg har faktisk forsøgt mig med Image, men prøver lige igen. DBNull.Value fik jeg også busted. Den ville ikke æde den, men tilsyneladende har jeg bedre held med System.Data.SqlTypes.SqlDateTime.Null Jeg vender lige tilbage ang. Blob.
30. marts 2009 - 13:19
#3
Jeg så lige, at jeg havde lavet en fejl i spm. Det er en Oracle og ikke MySql. :) Jeg har forsøgt mig med Image og Blob, men uden held. Umiddelbart kan jeg ikke se at der skulle være en direkte måde at kopiere det... nogle forslag?
30. marts 2009 - 14:12
#4
Det skal virke med en Image kolonne! Kan jeg se koden du bruger?
30. marts 2009 - 14:18
#5
En Image kolonne skal altså virke! For at inserte i en Image kolonne, skal du have data liggende i et byte[] array. Det bliver noget lignende dette: byte[] data = GetBlobDataFromOracleDB() MSCmd.CommandText = "insert into table (myImage) value (@blob)"; SqlParameter blobParam = new SqlParameter("@blob", System.Data.SqlDbType.Image) blobParam.Value = data; MSCmd.Parameters.Add(blobParam); MSConn.Open(); MSCmd.ExecuteNonQuery(); MSConn.Close();
30. marts 2009 - 14:22
#6
Jeg sætter min parameter således: MSCmd.Parameters.Add("@billede", SqlDbType.Image).Value = !OraRdr.IsDBNull(OraRdr.GetOrdinal("billede")) ? OraRdr.GetOracleBlob(OraRdr.GetOrdinal("billede")) : null; Altså, resten fungere helt super (hvis jeg ikke indsætter feltet). Der er 43 felter og ud af disse er denne ene en Blob. SqlDbType.Image og Oracle.DataAccess.Types.OracleBlob passer bare ikke sammen...
30. marts 2009 - 14:48
#7
MSCmd.Parameters.Add("@billede", SqlDbType.Image).Value = OraRdr.GetOracleBlob(OraRdr.GetOrdinal("billede")).Value; Det virkede jo. Smider du et svar?
30. marts 2009 - 14:54
#8
:-)
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.