<?xml version="1.0" encoding="iso-8859-1"?><feed version="0.3" xmlns="http://purl.org/atom/ns#" xml:lang="it-it"><title>PeppeDotNet Blog - Category: Database</title><link rel="alternate" type="text/html" href="http://www.peppedotnet.it/Blog/"/><tagline type="text/html">www.peppedotnet.it/Blog/</tagline><id>http://www.peppedotnet.it/Blog/</id><modified>2010-5-9T11:19:40+01:00</modified><author><name>Marchi Giuseppe</name><url>http://www.peppedotnet.it/Blog/</url></author><entry><title>SQL Express 2008 R2 ha alzato il limite dei propri database a 10GB !</title><id>/Blog/SqlExpress2008IncreasesDatabaseSizeLimitTo10gb.aspx</id><created>2010-5-9T11:19:40+01:00</created><content type="text/html" mode="escaped">E' di un pò di giorni la notizia, ma vorrei esser certo che nessuno degli sviluppatori SharePoint se l'è persa..
&lt;br /&gt;Il team di SQL Express ha annunciato l'aumento della grandezza massima dei database della versione 2008 R2, passando da 4gb a 10gb; questo vuol dire che le nostre installazioni SharePoint 2010 in modalità standalone, non dovranno più sottostare al vecchio limite.
&lt;br /&gt;
&lt;br /&gt;Questo il post dell'annuncio:
&lt;br /&gt;&lt;a href="http://blogs.msdn.com/sqlexpress/archive/2010/04/21/database-size-limit-increased-to-10gb-in-sql-server-2008-r2-express.aspx" title="SQL Server 2008 R2 Express Database Size Limit Increased to 10GB" target="_blank"&gt;http://blogs.msdn.com/sqlexpress/archive/2010/04/21/database-size-limit-increased-to-10gb-in-sql-server-2008-r2-express.aspx&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SQL Server.aspx" title="TAG: SQL Server"&gt;SQL Server&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SqlExpress2008IncreasesDatabaseSizeLimitTo10gb.aspx" /><issued>2010-5-9T11:19:40+01:00</issued><modified>2010-5-9T11:19:40+01:00</modified></entry><entry><title>Come visualizzare i trigger di un database SQL Server 2005</title><id>/Blog/HowToViewDatabaseTriggersOnSqlServer2005.aspx</id><created>2009-5-8T12:54:21+01:00</created><content type="text/html" mode="escaped">Purtroppo SQL Server Management Studio 2005 non permette la gestione dell'insieme dei trigger tramite interfaccia grafica, come invece fa per funzioni e stored procedures. Mentre lo permette sulle singole tabelle.
&lt;br /&gt;Per vedere l'elenco completo dei trigger creati all'interno di un singolo database, bisogna effettuare la seguente selezione sulla tabella di sistema "sysobjects":
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;USE [LogDocumentale]
&lt;br /&gt;GO
&lt;br /&gt;select name &lt;span style="color: #0000FF"&gt;as&lt;/span&gt; 'Trigger', object_name(parent_obj) &lt;span style="color: #0000FF"&gt;as&lt;/span&gt; 'Table'
&lt;br /&gt;from sysobjects
&lt;br /&gt;where xtype = 'TR'&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Poi, invece, per la modifica (a meno che non vogliamo andare all'interno della tabella scelta ed utilizzare l'interfaccia di SQL Management Studio) dobbiamo creare a mano lo script utilizzando il comando ALTER TRIGGER.
&lt;br /&gt;Tale comando però necessita, almeno come punto di partenza, del codice T-SQL con cui è stato creato il trigger. Per visualizzarlo, ci viene in aiuto la stored procedure "sp_helptext", che necessita come unico parametro il nome del trigger da visualizzare.
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;sp_helptext 'MyCustomTrigger'&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/Trigger.aspx" title="TAG: Trigger"&gt;Trigger&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SQL Server 2005.aspx" title="TAG: SQL Server 2005"&gt;SQL Server 2005&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/T-SQL.aspx" title="TAG: T-SQL"&gt;T-SQL&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/HowToViewDatabaseTriggersOnSqlServer2005.aspx" /><issued>2009-5-8T12:54:21+01:00</issued><modified>2009-5-8T12:54:21+01:00</modified></entry><entry><title>Stringa di connessione per Access 2007</title><id>/Blog/Access2007ConnectionString.aspx</id><created>2008-3-9T22:55:50+01:00</created><content type="text/html" mode="escaped">So che ormai di Access non se ne parla più di tempo.. ma magari può essere utile a qualcuno.
&lt;br /&gt;Questa la nuova stringa per connettersi ad un database Access 2007:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;Microsoft.ACE.OLEDB.12.0;Data Source=C:\Data\NORTHWND.accdb;Persist Security Info=False&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/Access.aspx" title="TAG: Access"&gt;Access&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Office 2007.aspx" title="TAG: Office 2007"&gt;Office 2007&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/Access2007ConnectionString.aspx" /><issued>2008-3-9T22:55:50+01:00</issued><modified>2008-3-9T22:55:50+01:00</modified></entry><entry><title>Sql Server 2005 Service Pack 2</title><id>/Blog/SqlServer2005ServicePack2.aspx</id><created>2007-2-20T20:52:11+01:00</created><content type="text/html" mode="escaped">E' stata rilasciata la RTM del Service Pack 2 si SQL Server 2005.
&lt;br /&gt;Questo il link per il download:
&lt;br /&gt;
&lt;br /&gt;&lt;a href="http://www.microsoft.com/technet/prodtechnol/sql/2005/downloads/servicepacks/sp2.mspx" title="SQL Server Service Pack 2"&gt;http://www.microsoft.com/technet/prodtechnol/sql/2005/downloads/servicepacks/sp2.mspx&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;La cosa cui prestare attenzione è che è necessario reinstallare l'intero prodotto, e non basta limitarsi a disinstallare il service pack.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SQL Server.aspx" title="TAG: SQL Server"&gt;SQL Server&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SqlServer2005ServicePack2.aspx" /><issued>2007-2-20T20:52:11+01:00</issued><modified>2007-2-20T20:52:11+01:00</modified></entry><entry><title>Sql Server - Database Publishing Wizard</title><id>/Blog/SqlServerDatabasePublishingWizard.aspx</id><created>2006-12-22T17:26:55+01:00</created><content type="text/html" mode="escaped">In questi giorni mi sono successi un pò di casini con un db sql server posto su di un server in hosting. Avevo credenziali limitate e non potevo attaccare il mio database pulito da locale.
&lt;br /&gt;Poi, &lt;a href="http://weblogs.asp.net/scottgu/archive/2006/12/22/recipe-deploying-a-sql-database-to-a-remote-hosting-environment-part-1.aspx" title="Deploying a SQL Database to a Remote Hosting Environment "&gt;questo post&lt;/a&gt; di &lt;a href="http://weblogs.asp.net/scottgu/default.aspx" title="Scott Guthrie"&gt;Scott Guthrie&lt;/a&gt;, su come effettuare il deploy di un database da remoto mi ha illuminato !
&lt;br /&gt;Mi è bastato quindi scaricare il Database Publishing Wizard, uno splendido add-in per visual studio 2005 che ti permette di salvare in locale un file .sql contenente tutti gli statement per la ricreazione del database in remoto pari pari com'è in locale. Inoltre c'è la possibilità di scegliere se creare codice compatibile con la versione 2000 o con la 2005 di Sql Server e se importare solo i dati, o solo lo schema delle tabelle e gli altri oggetti come store procedures, triggers e tutto il resto, o entrambi.
&lt;br /&gt;La procedure di export è andata senza alcun problema. Con quella di import invece, ho avuto solamente un problema con la collation, perchè il mio server aveva installata la SQL_Latin1_General_CI_AS mentre gli script vengono generati con la Latin1_General_CI_AS.
&lt;br /&gt;
&lt;br /&gt;L'add-in &lt;a href="http://www.codeplex.com/sqlhost/Wiki/View.aspx?title=Database%20Publishing%20Wizard" title="Database Publishing Wizard"&gt;Database Publishing Wizard&lt;/a&gt; è disponibile gratuitamente su CodePlex.</content><link rel="alternate" type="text/html" href="/Blog/SqlServerDatabasePublishingWizard.aspx" /><issued>2006-12-22T17:26:55+01:00</issued><modified>2006-12-22T17:26:55+01:00</modified></entry><entry><title>Inserire un file in un campo BLOB con ODP.NET</title><id>/Blog/Inserire_file_in_campo_blob_oracle.aspx</id><created>2005-7-8T12:40:30+01:00</created><content type="text/html" mode="escaped">Continuiamo la "saga" dell'interazione tra .NET e i campi BLOB di Oracle tramite l'uso della librearia &lt;a href="http://www.oracle.com/technology/tech/windows/odpnet/index.html" title="ODP.NET"&gt;ODP.NET&lt;/a&gt;.
&lt;br /&gt;Dopo aver parlato di &lt;a href="http://www.peppedotnet.it/post42.aspx" title="Procedura per caricare file nel database"&gt;come creare una procedura per inserire i file dal file system all'intero della base di dati&lt;/a&gt;, e di &lt;a href="http://www.peppedotnet.it/post43.aspx" title="Leggere campi blob con .NET"&gt;come leggere il contenuto di una colonna di tipo BLOB da un'applicazione .NET&lt;/a&gt;, oggi vediamo la sintassi .NET pe inserire un file nel database.
&lt;br /&gt;
&lt;br /&gt;La peculiarità del modo in cui andremo ad effettuare il trasferimento, sta nel passare ad un oggetto OracleCommand, una query SQL che non è altro che un blocco PL/SQL anonimo, che ci permette di specificare una query parametrica d'inserimento, i cui parametri verranno poi attaccati al command.
&lt;br /&gt;Prendendo sempre spunto dalla tabelle creata nel &lt;a href="http://www.peppedotnet.it/post42.aspx" title="Primo post della serie"&gt;primo post della serie&lt;/a&gt;, questo il codice per l'inserimento, dato uno stream di dati.
&lt;br /&gt;
&lt;br /&gt;&lt;b&gt;C#&lt;/b&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;&lt;span style="color: #0000FF"&gt;using&lt;/span&gt; Oracle.DataAccess.Client;
&lt;br /&gt;&lt;span style="color: #0000FF"&gt;using&lt;/span&gt; Oracle.DataAccess.Types;
&lt;br /&gt;
&lt;br /&gt;&lt;span style="color: #0000FF"&gt;public&lt;/span&gt; &lt;span style="color: #0000FF"&gt;void&lt;/span&gt; Page_Load(Object sender, EventArgs e)
&lt;br /&gt;{
&lt;br /&gt;      &lt;span style="color: #0000FF"&gt;string&lt;/span&gt; strConn = &lt;span style="color: #848284"&gt;"Data Source=Test;User Id=Test;Password=Test;"&lt;/span&gt;;
&lt;br /&gt;      &lt;span style="color: #008200"&gt;//Blocco PL/SQL anonimo
&lt;/span&gt;
      &lt;span style="color: #0000FF"&gt;string&lt;/span&gt; query = &lt;span style="color: #848284"&gt;"BEGIN "&lt;/span&gt; +
&lt;br /&gt;                     &lt;span style="color: #848284"&gt;"INSERT INTO provaBlob (fileName, file) "&lt;/span&gt; +
&lt;br /&gt;                     &lt;span style="color: #848284"&gt;"VALUES (:1, :2) "&lt;/span&gt; +
&lt;br /&gt;                     &lt;span style="color: #848284"&gt;"END;"&lt;/span&gt;;
&lt;br /&gt;      OracleConnection conn = &lt;span style="color: #0000FF"&gt;null&lt;/span&gt;;
&lt;br /&gt;      OracleCommand cmd = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; OracleCommand(query, conn);
&lt;br /&gt;
&lt;br /&gt;      &lt;span style="color: #008200"&gt;//Parametri per la query d'inserimento
&lt;/span&gt;
      OracleParameter par1 = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; OracleParameter(&lt;span style="color: #848284"&gt;"nomefile"&lt;/span&gt;, OracleDbType.Varchar2);
&lt;br /&gt;      par1.Direction = ParameterDirection.Input;
&lt;br /&gt;      par1.Value = &lt;span style="color: #848284"&gt;"prova2.xml"&lt;/span&gt;;
&lt;br /&gt;      OracleParameter par2 = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; OracleParameter(&lt;span style="color: #848284"&gt;"myblob"&lt;/span&gt;, OracleDbType.Blob);
&lt;br /&gt;      par2.Direction = ParameterDirection.Input;
&lt;br /&gt;      Stream inStream = stream;
&lt;br /&gt;      &lt;span style="color: #0000FF"&gt;byte&lt;/span&gt;[] buffer = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; &lt;span style="color: #0000FF"&gt;byte&lt;/span&gt;[stream.Length];
&lt;br /&gt;      inStream.Read(buffer, 0, Convert.ToInt32(stream.Length));
&lt;br /&gt;      par2.Value = inStream;
&lt;br /&gt;
&lt;br /&gt;      &lt;span style="color: #008200"&gt;//Aggiungo i due parametri al command
&lt;/span&gt;
      cmd.Parameters.Add(par1);
&lt;br /&gt;      cmd.Parameters.Add(par2);
&lt;br /&gt;
&lt;br /&gt;      &lt;span style="color: #008200"&gt;//Eseguo l'inserimento
&lt;/span&gt;
      &lt;span style="color: #0000FF"&gt;try&lt;/span&gt;
&lt;br /&gt;      {
&lt;br /&gt;            &lt;span style="color: #0000FF"&gt;using&lt;/span&gt;(conn = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; OracleConnection(strConn))
&lt;br /&gt;            {	
&lt;br /&gt;                  conn.Open();
&lt;br /&gt;                  cmd.ExecuteNonQuery();
&lt;br /&gt;                  conn.Close();
&lt;br /&gt;            }
&lt;br /&gt;      }
&lt;br /&gt;      &lt;span style="color: #0000FF"&gt;catch&lt;/span&gt;(Exception exe)
&lt;br /&gt;      { &lt;span style="color: #008200"&gt;//Gestione eccezioni ... }
&lt;/span&gt;
}&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;&lt;b&gt;VB.NET&lt;/b&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;&lt;span style="color: #0000FF"&gt;Imports&lt;/span&gt; Oracle.DataAccess.Client
&lt;br /&gt;&lt;span style="color: #0000FF"&gt;Imports&lt;/span&gt; Oracle.DataAccess.Types;
&lt;br /&gt;
&lt;br /&gt;&lt;span style="color: #0000FF"&gt;Public&lt;/span&gt; &lt;span style="color: #0000FF"&gt;Sub&lt;/span&gt; Page_Load(&lt;span style="color: #0000FF"&gt;ByVal&lt;/span&gt; sender &lt;span style="color: #0000FF"&gt;As&lt;/span&gt; &lt;span style="color: #0000FF"&gt;Object&lt;/span&gt;, &lt;span style="color: #0000FF"&gt;ByVal&lt;/span&gt; e &lt;span style="color: #0000FF"&gt;As&lt;/span&gt; EventArgs) &lt;span style="color: #0000FF"&gt;Handles&lt;/span&gt; &lt;span style="color: #0000FF"&gt;MyBase&lt;/span&gt;.Load
&lt;br /&gt;
&lt;br /&gt;      &lt;span style="color: #0000FF"&gt;Dim&lt;/span&gt; strConn &lt;span style="color: #0000FF"&gt;As&lt;/span&gt; &lt;span style="color: #0000FF"&gt;String&lt;/span&gt; = &lt;span style="color: #848284"&gt;"Data Source=Test;User Id=Test;Password=Test;"&lt;/span&gt;
&lt;br /&gt;      &lt;span style="color: #008200"&gt;'Blocco PL/SQL anonimo&lt;/span&gt;
      &lt;span style="color: #0000FF"&gt;Dim&lt;/span&gt; query &lt;span style="color: #0000FF"&gt;As String&lt;/span&gt; = &lt;span style="color: #848284"&gt;"BEGIN "&lt;/span&gt; &amp; _
&lt;br /&gt;                            &lt;span style="color: #848284"&gt;"INSERT INTO provaBlob (fileName, file) "&lt;/span&gt; &amp; _
&lt;br /&gt;                            &lt;span style="color: #848284"&gt;"VALUES (:1, :2) "&lt;/span&gt; &amp; _
&lt;br /&gt;                            &lt;span style="color: #848284"&gt;"END;"&lt;/span&gt;
&lt;br /&gt;      &lt;span style="color: #0000FF"&gt;Dim&lt;/span&gt; conn &lt;span style="color: #0000FF"&gt;As&lt;/span&gt; &lt;span style="color: #0000FF"&gt;New&lt;/span&gt; OracleConnection(strConn);
&lt;br /&gt;      &lt;span style="color: #0000FF"&gt;Dim&lt;/span&gt; cmd &lt;span style="color: #0000FF"&gt;As&lt;/span&gt; &lt;span style="color: #0000FF"&gt;New&lt;/span&gt; OracleCommand(query, conn)
&lt;br /&gt;
&lt;br /&gt;      &lt;span style="color: #008200"&gt;'Parametri per la query d'inserimento
&lt;/span&gt;
      &lt;span style="color: #0000FF"&gt;Dim&lt;/span&gt; par1 &lt;span style="color: #0000FF"&gt;As&lt;/span&gt; &lt;span style="color: #0000FF"&gt;New&lt;/span&gt; OracleParameter(&lt;span style="color: #848284"&gt;"nomefile"&lt;/span&gt;, OracleDbType.Varchar2)
&lt;br /&gt;      par1.Direction = ParameterDirection.Input
&lt;br /&gt;      par1.Value = &lt;span style="color: #848284"&gt;"prova2.xml"&lt;/span&gt;
&lt;br /&gt;      &lt;span style="color: #0000FF"&gt;Dim&lt;/span&gt; par2 &lt;span style="color: #0000FF"&gt;As&lt;/span&gt; &lt;span style="color: #0000FF"&gt;New&lt;/span&gt; OracleParameter(&lt;span style="color: #848284"&gt;"myblob"&lt;/span&gt;, OracleDbType.Blob)
&lt;br /&gt;      par2.Direction = ParameterDirection.Input
&lt;br /&gt;      &lt;span style="color: #0000FF"&gt;Dim&lt;/span&gt; inStream &lt;span style="color: #0000FF"&gt;As&lt;/span&gt; Stream = stream
&lt;br /&gt;      &lt;span style="color: #0000FF"&gt;Dim&lt;/span&gt; buffer &lt;span style="color: #0000FF"&gt;As&lt;/span&gt; &lt;span style="color: #0000FF"&gt;New&lt;/span&gt; &lt;span style="color: #0000FF"&gt;Byte&lt;/span&gt;(stream.Length)
&lt;br /&gt;      inStream.Read(buffer, 0, Convert.ToInt32(stream.Length))
&lt;br /&gt;      par2.Value = inStream
&lt;br /&gt;
&lt;br /&gt;      &lt;span style="color: #008200"&gt;'Aggiungo i due parametri al command
&lt;/span&gt;
      cmd.Parameters.Add(par1)
&lt;br /&gt;      cmd.Parameters.Add(par2)
&lt;br /&gt;
&lt;br /&gt;      &lt;span style="color: #008200"&gt;'Eseguo l'inserimento
&lt;/span&gt;
      &lt;span style="color: #0000FF"&gt;Try&lt;/span&gt;
&lt;br /&gt;            conn.Open();
&lt;br /&gt;            cmd.ExecuteNonQuery();
&lt;br /&gt;            conn.Close();
&lt;br /&gt;      &lt;span style="color: #0000FF"&gt;Catch&lt;/span&gt; ex &lt;span style="color: #0000FF"&gt;As&lt;/span&gt; Exception
&lt;br /&gt;           &lt;span style="color: #008200"&gt;'Gestione eccezioni ...
&lt;/span&gt;
      &lt;span style="color: #0000FF"&gt;Finally&lt;/span&gt;
&lt;br /&gt;            conn.Dispose()
&lt;br /&gt;            cmd.Dispose()
&lt;br /&gt;      &lt;span style="color: #0000FF"&gt;End&lt;/span&gt; &lt;span style="color: #0000FF"&gt;Try&lt;/span&gt;
&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;Vi ricordo che la variabile "stream" è lo stream di dati del vostro file.</content><link rel="alternate" type="text/html" href="/Blog/Inserire_file_in_campo_blob_oracle.aspx" /><issued>2005-7-8T12:40:30+01:00</issued><modified>2005-7-8T12:40:30+01:00</modified></entry><entry><title>Leggere un file da un campo Blob di Oracle con ODP.NET</title><id>/Blog/Leffege_file_campo_blob_oracle.aspx</id><created>2005-7-3T12:48:16+01:00</created><content type="text/html" mode="escaped">Nel &lt;a href="http://www.peppedotnet.it/post42.aspx" title="Caricare un file all'interno di un campo BLOB in Oracle"&gt;precedente post&lt;/a&gt; abbiamo visto come creare una tabella per archiviare files veri e propri direttamente all'interno di una base di dati Oracle; oggi (come promesso), vediamo come utilizzare le classi della libreria &lt;a href="http://www.oracle.com/technology/tech/windows/odpnet/index.html" title="Oracle Data Provider for .NET"&gt;ODP.NET&lt;/a&gt; (Oracle Data Provider for .NET) per la lettura dei dati presenti in un campo blob e per il successivo salvataggio di questi dati sul file system.
&lt;br /&gt;Prendendo spunto dalla tabella creata, questo il codice per la lettura e il salvataggio del file dalla base di dati al file system:
&lt;br /&gt;
&lt;br /&gt;&lt;b&gt;C#&lt;/b&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;&lt;span style="color: #0000FF"&gt;using&lt;/span&gt; Oracle.DataAccess.Client;
&lt;br /&gt;&lt;span style="color: #0000FF"&gt;using&lt;/span&gt; Oracle.DataAccess.Types;
&lt;br /&gt;
&lt;br /&gt;&lt;span style="color: #0000FF"&gt;public&lt;/span&gt; &lt;span style="color: #0000FF"&gt;void&lt;/span&gt; Page_Load(Object sender, EventArgs e)
&lt;br /&gt;{
&lt;br /&gt;      &lt;span style="color: #0000FF"&gt;string&lt;/span&gt; strConn = &lt;span style="color: #848284"&gt;"Data Source=Test;User Id=Test;Password=Test;"&lt;/span&gt;;
&lt;br /&gt;      &lt;span style="color: #0000FF"&gt;string&lt;/span&gt; query = &lt;span style="color: #848284"&gt;"SELECT fileName, file FROM provaBlob WHERE fileName='prova.xml'"&lt;/span&gt;;
&lt;br /&gt;      OracleConnection conn = &lt;span style="color: #0000FF"&gt;null&lt;/span&gt;;
&lt;br /&gt;      OracleCommand cmd = &lt;span style="color: #0000FF"&gt;null&lt;/span&gt;;
&lt;br /&gt;      &lt;span style="color: #0000FF"&gt;try&lt;/span&gt;
&lt;br /&gt;      {
&lt;br /&gt;            &lt;span style="color: #0000FF"&gt;using&lt;/span&gt;(conn = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; OracleConnection(strConn))
&lt;br /&gt;            {	
&lt;br /&gt;                  &lt;span style="color: #0000FF"&gt;using&lt;/span&gt;(cmd = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; OracleCommand(query, conn))
&lt;br /&gt;                  {
&lt;br /&gt;                        OracleDataReader reader = cmd.ExecuteReader();
&lt;br /&gt;                        &lt;span style="color: #0000FF"&gt;while&lt;/span&gt;(reader.Read())
&lt;br /&gt;                        {
&lt;br /&gt;                              OracleBlob blob = reader.GetOracleBlob(1);
&lt;br /&gt;                              &lt;span style="color: #0000FF"&gt;string&lt;/span&gt; fileName = reader[&lt;span style="color: #848284"&gt;"fileName"&lt;/span&gt;]
&lt;br /&gt;                              CreateFile(fileName, blob);
&lt;br /&gt;                        }
&lt;br /&gt;                        reader.Close();
&lt;br /&gt;                  }
&lt;br /&gt;            }
&lt;br /&gt;      }
&lt;br /&gt;      &lt;span style="color: #0000FF"&gt;catch&lt;/span&gt;(Exception exe)
&lt;br /&gt;      { &lt;span style="color: #008200"&gt;//Gestione eccezioni ... }
&lt;/span&gt;
}
&lt;br /&gt;
&lt;br /&gt;&lt;span style="color: #0000FF"&gt;private&lt;/span&gt; &lt;span style="color: #0000FF"&gt;void&lt;/span&gt; CreateFile(OracleBlob blob, &lt;span style="color: #0000FF"&gt;string&lt;/span&gt; fileName)
&lt;br /&gt;{
&lt;br /&gt;      FileStream fs = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; FileStream(fileName, FileMode.CreateNew);
&lt;br /&gt;      &lt;span style="color: #0000FF"&gt;byte&lt;/span&gt;[] buffer = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; &lt;span style="color: #0000FF"&gt;byte&lt;/span&gt;[blob.Length];
&lt;br /&gt;      &lt;span style="color: #0000FF"&gt;int&lt;/span&gt; bytesRead = 0;
&lt;br /&gt;      bytesRead = blob.Read(buffer, 0, buffer.Length);
&lt;br /&gt;      &lt;span style="color: #0000FF"&gt;while&lt;/span&gt; (bytesRead &gt; 0)
&lt;br /&gt;      {
&lt;br /&gt;            fs.Write(buffer, 0, bytesRead);
&lt;br /&gt;            bytesRead = blob.Read(buffer, 0, buffer.Length);
&lt;br /&gt;      } 
&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;&lt;b&gt;VB.NET&lt;/b&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;&lt;span style="color: #0000FF"&gt;Imports&lt;/span&gt; Oracle.DataAccess.Client
&lt;br /&gt;&lt;span style="color: #0000FF"&gt;Imports&lt;/span&gt; Oracle.DataAccess.Types;
&lt;br /&gt;
&lt;br /&gt;&lt;span style="color: #0000FF"&gt;Public&lt;/span&gt; &lt;span style="color: #0000FF"&gt;Sub&lt;/span&gt; Page_Load(&lt;span style="color: #0000FF"&gt;ByVal&lt;/span&gt; sender &lt;span style="color: #0000FF"&gt;As&lt;/span&gt; &lt;span style="color: #0000FF"&gt;Object&lt;/span&gt;, &lt;span style="color: #0000FF"&gt;ByVal&lt;/span&gt; e &lt;span style="color: #0000FF"&gt;As&lt;/span&gt; EventArgs) &lt;span style="color: #0000FF"&gt;Handles&lt;/span&gt; &lt;span style="color: #0000FF"&gt;MyBase&lt;/span&gt;.Load
&lt;br /&gt;
&lt;br /&gt;      &lt;span style="color: #0000FF"&gt;Dim&lt;/span&gt; strConn &lt;span style="color: #0000FF"&gt;As&lt;/span&gt; &lt;span style="color: #0000FF"&gt;String&lt;/span&gt; = &lt;span style="color: #848284"&gt;"Data Source=Test;User Id=Test;Password=Test;"&lt;/span&gt;
&lt;br /&gt;      &lt;span style="color: #0000FF"&gt;Dim&lt;/span&gt; conn &lt;span style="color: #0000FF"&gt;As&lt;/span&gt; &lt;span style="color: #0000FF"&gt;New&lt;/span&gt; OracleConnection(strConn)
&lt;br /&gt;      &lt;span style="color: #0000FF"&gt;Dim&lt;/span&gt; query &lt;span style="color: #0000FF"&gt;As&lt;/span&gt; &lt;span style="color: #0000FF"&gt;String&lt;/span&gt; = &lt;span style="color: #848284"&gt;"SELECT fileName, file FROM provaBlob WHERE fileName='prova.xml'"&lt;/span&gt;
&lt;br /&gt;      &lt;span style="color: #0000FF"&gt;Dim&lt;/span&gt; cmd &lt;span style="color: #0000FF"&gt;As&lt;/span&gt; &lt;span style="color: #0000FF"&gt;New&lt;/span&gt; OracleCommand(query, conn)
&lt;br /&gt;      &lt;span style="color: #0000FF"&gt;Try&lt;/span&gt;
&lt;br /&gt;            conn.Open();	
&lt;br /&gt;            &lt;span style="color: #0000FF"&gt;Dim&lt;/span&gt; reader &lt;span style="color: #0000FF"&gt;As&lt;/span&gt; OracleDataReader = cmd.ExecuteReader()
&lt;br /&gt;            &lt;span style="color: #0000FF"&gt;While&lt;/span&gt; reader.Read()
&lt;br /&gt;                  &lt;span style="color: #0000FF"&gt;Dim&lt;/span&gt; blob &lt;span style="color: #0000FF"&gt;As&lt;/span&gt; OracleBlob = reader.GetOracleBlob(1)
&lt;br /&gt;                  &lt;span style="color: #0000FF"&gt;Dim&lt;/span&gt; fileName &lt;span style="color: #0000FF"&gt;As&lt;/span&gt; &lt;span style="color: #0000FF"&gt;String&lt;/span&gt; = reader[&lt;span style="color: #848284"&gt;"fileName"&lt;/span&gt;]
&lt;br /&gt;                  CreateFile(fileName, blob);
&lt;br /&gt;            &lt;span style="color: #0000FF"&gt;End&lt;/span&gt; &lt;span style="color: #0000FF"&gt;While&lt;/span&gt;
&lt;br /&gt;            reader.Close();
&lt;br /&gt;            conn.Close();
&lt;br /&gt;      &lt;span style="color: #0000FF"&gt;Catch&lt;/span&gt; ex &lt;span style="color: #0000FF"&gt;As&lt;/span&gt; Exception
&lt;br /&gt;           &lt;span style="color: #008200"&gt;'Gestione eccezioni ...
&lt;/span&gt;
      &lt;span style="color: #0000FF"&gt;Finally&lt;/span&gt;
&lt;br /&gt;            conn.Dispose()
&lt;br /&gt;            cmd.Dispose()
&lt;br /&gt;      &lt;span style="color: #0000FF"&gt;End&lt;/span&gt; &lt;span style="color: #0000FF"&gt;Try&lt;/span&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;span style="color: #0000FF"&gt;End&lt;/span&gt; &lt;span style="color: #0000FF"&gt;Sub&lt;/span&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;span style="color: #0000FF"&gt;Private&lt;/span&gt; &lt;span style="color: #0000FF"&gt;Sub&lt;/span&gt; CreateFile(&lt;span style="color: #0000FF"&gt;ByVal&lt;/span&gt; blob &lt;span style="color: #0000FF"&gt;As&lt;/span&gt; OracleBlob, &lt;span style="color: #0000FF"&gt;ByVal&lt;/span&gt; fileName &lt;span style="color: #0000FF"&gt;As&lt;/span&gt; &lt;span style="color: #0000FF"&gt;String&lt;/span&gt;)
&lt;br /&gt;
&lt;br /&gt;      &lt;span style="color: #0000FF"&gt;Dim&lt;/span&gt; fs &lt;span style="color: #0000FF"&gt;As&lt;/span&gt; &lt;span style="color: #0000FF"&gt;New&lt;/span&gt; FileStream(fileName, FileMode.CreateNew);
&lt;br /&gt;      &lt;span style="color: #0000FF"&gt;Dim&lt;/span&gt; buffer &lt;span style="color: #0000FF"&gt;As&lt;/span&gt; &lt;span style="color: #0000FF"&gt;Byte&lt;/span&gt;() = new byte(blob.Length);
&lt;br /&gt;      &lt;span style="color: #0000FF"&gt;Dim&lt;/span&gt; bytesRead &lt;span style="color: #0000FF"&gt;As&lt;/span&gt; &lt;span style="color: #0000FF"&gt;Integer&lt;/span&gt; = 0
&lt;br /&gt;      bytesRead = blob.Read(buffer, 0, buffer.Length)
&lt;br /&gt;      &lt;span style="color: #0000FF"&gt;While&lt;/span&gt; bytesRead &gt; 0
&lt;br /&gt;            fs.Write(buffer, 0, bytesRead)
&lt;br /&gt;            bytesRead = blob.Read(buffer, 0, buffer.Length)
&lt;br /&gt;      &lt;span style="color: #0000FF"&gt;End&lt;/span&gt; &lt;span style="color: #0000FF"&gt;While&lt;/span&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;span style="color: #0000FF"&gt;End&lt;/span&gt; &lt;span style="color: #0000FF"&gt;Sub&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;</content><link rel="alternate" type="text/html" href="/Blog/Leffege_file_campo_blob_oracle.aspx" /><issued>2005-7-3T12:48:16+01:00</issued><modified>2005-7-3T12:48:16+01:00</modified></entry><entry><title>Caricare un file all'interno di un campo BLOB in Oracle</title><id>/Blog/Caricare_file_in_campo_blob_oracle.aspx</id><created>2005-6-30T22:42:31+01:00</created><content type="text/html" mode="escaped">Oracle, essendo un database ad oggetti multimediali, ci permette di salvare all'interno di una tabella un intero file. File che può essere letto e modificato.
&lt;br /&gt;Questo tipo di possibilità è data dai tipi di dati LOB (Large OBject) come CLOB, BFILE e BLOB. Il primo permette di archiviare stringhe di caratteri nolto lunghe, il secondo permette di salvare tipi di file binari, mentre il testo (decisamente più interessante) permette allo sviluppatore di inserire qualsiasi tipo di file, dal file di testo alle immagini.
&lt;br /&gt;Vediamo ora come dichiarare una tabella con una colonna di tipo blob e come creare una procedura che effettui il caricamento vero e proprio del file sulla base di dati dal file system.
&lt;br /&gt;
&lt;br /&gt;Creazione della tabella:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;CREATE TABLE provaBlob (
&lt;br /&gt;     fileName     VARCHAR2(15),
&lt;br /&gt;     file         BLOB);&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Creazione di un oggetto "Directory", che rappresenta il ponte tra il database e la directory fisica:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;CREATE OR REPLACE DIRECTORY myDirectory AS 'C:\MyFiles';&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Creazione della procedura d'inserimento:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;CREATE OR REPLACE PROCEDURE loadFiles(nomeFile IN VARCHAR2) IS
&lt;br /&gt;	bl BLOB;
&lt;br /&gt;	bf BFILE;
&lt;br /&gt;	bs INTEGER;
&lt;br /&gt;BEGIN
&lt;br /&gt;	INSERT INTO provaBlob VALUES(nomefile, empty_blob());
&lt;br /&gt;	bf := bfilename('myDirectory', nomeFile);
&lt;br /&gt;	DBMS_LOB.FILEOPEN(bf);
&lt;br /&gt;	bs := DBMS_LOB.GETLENGTH(bf);
&lt;br /&gt;	SELECT file INTO bl FROM provaBlob WHERE fileName = nomefile;
&lt;br /&gt;	DBMS_LOB.LOADFROMFILE(bl, bf, bs);
&lt;br /&gt;	DBMS_LOB.FILECLOSE(bf);
&lt;br /&gt;EXCEPTION
&lt;br /&gt;	WHEN OTHERS THEN
&lt;br /&gt;		DBMS_OUTPUT.PUT_LINE(SQLCODE||' '||SQLERRM);
&lt;br /&gt;END;
&lt;br /&gt;/
&lt;br /&gt;SHOW ERRORS&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Una volta creati tutti questi oggetti (che chiaramente devono essere creati da un utente con permessi di creazione di tabelle, procedure e directory), possiamo andare a caricare il nostro primo file, eseguendo la procedura appena creata:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;EXEC loadFiles('prova.xml');&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;A breve cercherò di pubblicare il modo di leggere o caricare un file dal file system con .NET e l'uso della libreria &lt;a href="http://www.oracle.com/technology/tech/windows/odpnet/index.html" title="Oracle Data Provider for .NET"&gt;Oracle Data Provider for .NET&lt;/a&gt;, una libreria di classi .NET fornita da Oracle per far interagire il "bestione" con il applicazioni .NET.</content><link rel="alternate" type="text/html" href="/Blog/Caricare_file_in_campo_blob_oracle.aspx" /><issued>2005-6-30T22:42:31+01:00</issued><modified>2005-6-30T22:42:31+01:00</modified></entry></feed>