Programmazione


Per far si che l’output di una pagina jsp (in realtà di una qualsiasi pagina dinamica) venga interpretato dal browser come un file da aprire o scaricare  bisogna impostare oltre al mime type della pagina anche l’header “Content-Disposition” nella response.

Esempio csv
response.setContentType("text/csv");
response.setHeader("Content-Disposition", "attachment;filename=\"export.csv\";");

Per cambiare lo schema di una tabella in realtà la si deve trasferire nello schema destinazione attraverso il comando ALTER SCHEMA.

L’esempio seguente (preso dalla documentazione Microsoft) modifica lo schema HumanResources trasferendoci la tabella Address dallo schema Person.

USE AdventureWorks;
GO
ALTER SCHEMA HumanResources TRANSFER Person.Address;
GO

Per rinominare una tabella si può utilizzare la procedura sp_rename:

EXEC sp_rename 'NomeTabella', 'Nuovo_NomeTabella'

NomeTabella deve comprendere l’eventuale schema, mentre Nuovo_NomeTabella no.

Per rinominare una colona:

EXEC sp_rename 'NomeTabella.[NomeColonna]', 'NomeTabella.[Nuovo_NomeColonna]', 'COLUMN'

Questa query visualizza tutti i trigger, con il loro stato, di un singolo db.

SELECT T.[name] as TableName, TR.[Name] as TriggerName, CASE WHEN 1=OBJECTPROPERTY(TR.[id], 'ExecIsTriggerDisabled')THEN 'Disabled' ELSE 'Enabled' END Status

FROM sysobjects T INNER JOIN sysobjects TR on t.[ID] = TR.parent_obj

WHERE (T.xtype = 'U' or T.XType = 'V') AND (TR.xtype = 'TR') ORDER BY T.[name], TR.[name] 

Per stampare sull’output una pagina jsp lo stacktrace di una eccezione usare questo codice:

e.printStackTrace(new PrintWriter(out));

Assicurarsi che il mod_rewte sia caricato dopo mod_jk nella conf di Apache (caricato dopo = valutato prima).

La regola da usare deve essere del tipo:

RewriteRule ^(.*)/command/(.*)$ $1/command?var=$2 [PT,QSA]

usando [PT] la URL riscritta verra poi processata dalgi altri moduli come mod_jk.

L’articolo originale è qui http://www.kotfu.net/2006/11/tomcat-apache-mod_jk-and-mod_r.html

Quando si importa un database in SQL Server con un suo utente e schema bisogna fixare le login con il seguente comando:

EXEC sp_change_users_login ‘Auto_Fix’, ‘user’, NULL, ‘pwd’;

Fornisce la lista di tutte le tabelle dello schema:

SELECT table_name FROM SYS.DBA_TABLES WHERE owner = ‘…’;
SELECT table_name FROM SYS.ALL_ALL_TABLES WHERE owner = ‘…’;
con la 9i

Fornisce la lista dei constraint di uno schema:

SELECT OWNER, CONSTRAINT_NAME, CONSTRAINT_TYPE, TABLE_NAME, SEARCH_CONDITION, R_OWNER, R_CONSTRAINT_NAME, DELETE_RULE, STATUS, DEFERRABLE, DEFERRED, VALIDATED, GENERATED, BAD, RELY, LAST_CHANGE, INDEX_OWNER, INDEX_NAME, INVALID, VIEW_RELATED FROM SYS.DBA_CONSTRAINTS WHERE OWNER = ‘…’

Generare script per cancellare tutte le tabelle di un utente Oracle:

SELECT ‘drop table ‘ || table_name || ‘; ‘ FROM SYS.DBA_TABLES WHERE owner = ‘…’;

Viste con dati tabelle UTENTE corrente

USER_TABLE
USER_TABLESPACES
USER_TAB_COLUMNS

Riavviare un server bloccato per mancanza processi

Questa procedura è utile quando un server si blocca (non accetta più nuove connessioni) perché ha esaurito i processi si SO.

Killare qualche processo oracle, quindi

$sqlplus /nolog
SQL*Plus: Release 9.2.0.5.0 – Production on Thu Jan 5 11:37:22 2006
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
SQL> connect / as sysdba
Connected.
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started

Per visualizzare un xml:

visualizzare il campo xml nella tabella p_project composta dal campo id integer e dal campo xml xmltype.
SELECT t.id, t.xml.getClobVal() FROM p_project t

Per inserire un xml:

Attenzione al limite massimo di 4k, per xml più grandi bisogna usare il metodo file-directory.
Inserire un xml nella tabella p_group composta dal campo id int e dal campo xml xmltype.
DECLARE v_xml SYS.XMLTYPE; v_doc CLOB;
BEGIN
v_doc := ‘…’;
v_xml := sys.xmltype.createXML(v_doc);
INSERT INTO p_group (id, xml) VALUES (2, v_xml);
COMMIT;
END;

Per modificare:

Attenzione al limite massimo di 4k.
Modificare un xml nella tabella p_acl composta dal campo id int e dal campo xml xmltype.
DECLARE
v_xml SYS.XMLTYPE; v_doc CLOB;
BEGIN
v_doc := ‘…’;
v_xml := sys.xmltype.createXML(v_doc);
UPDATE p_acl SET xml = v_xml WHERE id=13;
COMMIT;
END;

import org.apache.xml.serialize.LineSeparator;
import org.apache.xml.serialize.OutputFormat;
import org.apache.xml.serialize.XMLSerializer;
import org.w3c.dom.Document;

StringWriter outS = new StringWriter();
try
{
OutputFormat format = new OutputFormat(“XML”, “UTF-8″, true);
format.setLineSeparator(LineSeparator.Windows);
format.setIndenting(true);
format.setLineWidth(0);
format.setPreserveSpace(true);
XMLSerializer serializer = new XMLSerializer(outS, format);
serializer.asDOMSerializer();
serializer.serialize(doc);
}
catch (IOException ioe)
{

}
outS.toString();

Pagina Successiva »