23. oktober 2005 - 12:23Der er
28 kommentarer og 1 løsning
oracle spørgsmål i forbindelse med windows applikation
to spøgsmål: 1:hvis jeg vil indsætte en meget lang rtf streng i et long felt får jeg følgende fejl: ora-0704:string litteral to long. kan dette undgås? 2: jeg er ved at hente "Oracle10g Data Provider for .NET 10.1.0.4.0 and ODAC " for at kunne bruge GetOracleClobForUpdate metoden. vil dette kunne løse ovenstående problem? og hvad sker der hvis jeg installerer denne driver på min maskine og derefter vil køre programmet på en anden maskine?
Eller kan jeg løse spm 1 ved kun at bruge using System.Data.OracleClient; namespacet?
grunden til spm 2 var at jeg har set oracles eget eksempel: // create an OracleConnection object to connect to the // database and open the connection OracleConnection myOracleConnection = new OracleConnection( "User Id=lob_user;Password=lob_password" ); myOracleConnection.Open();
// create an OracleCommand object to hold a SQL statement OracleCommand myOracleCommand = myOracleConnection.CreateCommand();
// step 3: get the LOB locator OracleClob myOracleClob = myOracleDataReader.GetOracleClobForUpdate(1);
// step 4: write to the LOB myOracleClob.Erase(); string text = "It is the east, and Juliet is the Sun"; char [] charArray = text.ToCharArray(); myOracleClob.Write(charArray, 0, charArray.Length); Console.WriteLine("myOracleClob.Value = " + myOracleClob.Value);
// step 5: commit the transaction myOracleTransaction.Commit(); Console.WriteLine("Successfully committed transaction");
// close the OracleDataReader and the OracleConnection object myOracleDataReader.Close(); myOracleConnection.Close();
Console.WriteLine("\nPress any key to end"); Console.ReadLine();
OracleCommand ins = new OracleCommand("INSERT INTO trtf (id,rtf) VALUES(:id,:rtf)", con); ins.Parameters.Add("id", OracleType.Int32); ins.Parameters.Add("rtf", OracleType.Clob); ins.Parameters["id"].Value = 1; ins.Parameters["rtf"].Value = "Dette er en kort streng"; ins.ExecuteNonQuery(); String big = ""; for(int i = 0; i < 10000; i++) { big = big + "Dette en en del af en lang streng."; } ins.Parameters["id"].Value = 2; ins.Parameters["rtf"].Value = big; ins.ExecuteNonQuery(); OracleCommand sel = new OracleCommand("SELECT rtf FROM trtf", con); OracleDataReader rdr = sel.ExecuteReader(); while(rdr.Read()) { Console.WriteLine(rdr[0]); } rdr.Close();
OracleCommand ins = new OracleCommand("INSERT INTO trtf (id,rtf) VALUES(:id,:rtf)", con); ins.Parameters.Add("id", OracleType.Int32); ins.Parameters.Add("rtf", OracleType.Clob); ins.Parameters["id"].Value = 1; ins.Parameters["rtf"].Value = "Dette er en kort streng"; ins.ExecuteNonQuery(); StringBuilder big = new StringBuilder(); for(int i = 0; i < 100000; i++) { big.Append("Dette en en del af en lang streng."); } ins.Parameters["id"].Value = 2; ins.Parameters["rtf"].Value = big.ToString(); ins.ExecuteNonQuery(); OracleCommand sel = new OracleCommand("SELECT rtf FROM trtf", con); OracleDataReader rdr = sel.ExecuteReader(); while(rdr.Read()) { Console.WriteLine(rdr[0]); } rdr.Close();
klarer 3.4 MB (jeg måtte lige skifte fra String til StringBuilder for ikke at dø på den append)
det er krav til opgaven. der ligge nogle oplysninger (noget tekst) gemt i et long felt i en oracle database som rtf. jeg skal give muligeheden for at kunne tilføje et .jpg billede til den tekst i det givne felt. De vil gerne have billedet gemt i basen med teksten som rtf
jeg skal bruge den i en update metode cmd = new OracleCommand("UPDATE ADVIS_TABLE SET A_RTF=':ADVIS'"+ " WHERE A_RTF_ID='" + strID + "'",conn); cmd.Parameters.Add("ADVIS",OracleType.Clob); cmd.Parameters["ADVIS"].Value = AdvisRTF; cmd.ExecuteNonQuery();
tabellen består af A_ID number A_RTF_ID varchar som er et unikt navn A_RTF som er den rtf streng der skal manipuleres
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.