2009년 12월 20일 일요일
마우스로 드래그해서 선택한 텍스트 가져오기
var selectionText = "";
if (document.getSelection) {
selectionText = document.getSelection();
} else if (document.selection) {
selectionText = document.selection.createRange().text;
}
return selectionText;
}
document.onmouseup = function() {
document.getElementById("console").innerHTML = selectText();
}
location.href, location.replace() 차이
A --> B --> C 처럼 페이지가 이동을 했다하자. (현재 당신은 C사이트에...)
B --> C로 이동할때 location.href를 썼다면
C페이지트에서 [뒤로]버튼을 누르면 B가뜬다.
하지만..
B --> C로 이동할때 location.replace()를 썼다면
C페이지에서 [뒤로]버튼을 누르면 A가뜬다.
그럼 사용자입장에선 '어 내가 클릭을 두번했나?' 하게 된다...
이런 차이로 인하여 적절히 써야 한다.
[뒤로]버튼을 눌렀을때 두페이지 이전으로 넘어가면 안되는 경우가 있는 반면,(.href를 써야겠지..)
프레임을 쓴 사이트 의 경우는 [뒤로]버튼 한두번 클릭으로 사이트를 빠져나가게 할 수도 있다. (.repalce()를 쓴경우...)
2009년 12월 19일 토요일
jstl 글자수 자르기
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<c:if test="${fn:length(reply.s_content) > 18}">
<c:out value="${fn:substring(reply.s_content,0,15)}" />...
</c:if>
<c:if test="${fn:length(reply.s_content) <= 18}">
${reply.s_content}
</c:if>
2009년 12월 15일 화요일
파라미터 까지 주소를 가져오는 소스 입니다.
public String getUrl(HttpServletRequest request)
{
String parameterList = "";
String ret_url = request.getRequestURI(); // No Parameter url
int k=0;
for (java.util.Enumeration e = request.getParameterNames(); e.hasMoreElements() ;k++) {
String name = (String) e.nextElement();
String[] value = request.getParameterValues(name);
if (k == 0) ret_url = ret_url + "?";
else if (k>0) ret_url = ret_url + "&";
parameterList = parameterList + "&";
for (int q=0; q<value.length;q++){
if (q>0) {
ret_url = ret_url + "&";
parameterList = parameterList + "&";
}
ret_url = ret_url + name + "=" + value[q];
parameterList = parameterList + name + "=" + value[q];
}
}
String result=ret_url;
return result;
}
실제 주소 가져오기
String saveFolder = "/test/a/";
String dir = getServletContext().getRealPath(saveFolder);
System.out.println("dir:"+dir);
2009년 11월 11일 수요일
jsp 가위/바위/보
////////////////////////////////////////////////////////////////////////
// 2009. 11. 10 Yang.Nam.Seok
////////////////////////////////////////////////////////////////////////
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<%
// 파일명 : game.jsp
// 이 부분에 필요한 코드를 넣어주세요.
// 1. 입력된 파라미터 처리하기
// 2. 새로운 값(Random) 만들기
// 3. 사용자가 입력한 값과 새로 만든 값을 비교하여 승패 처리하기 ; CurrentResult 라는 변수에 '승' 또는 '패'를 지정함
// 4. 세션에서 기존 승패 기록값 가져오기
// 5. 처리된 새로운 값으로 계산해서 세션에 넣기
// 결과 가져오기
int TotalWin=0;
int TotalLose=0;
java.util.Enumeration names=session.getAttributeNames();
while(names.hasMoreElements())
{
String name=(String)names.nextElement();
if(name.equals("TotalWin"))TotalWin =(Integer)session.getAttribute("TotalWin");
else if(name.equals("TotalLose"))TotalLose =(Integer)session.getAttribute("TotalLose");
}
//////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////
String CurrentResult=""; //승부결과저장
// 선택////////////////////////////////////////////////////////////////
request.setCharacterEncoding("EUC-KR");
String selection=request.getParameter("selection");
if(selection!=null)
{
int sel=Integer.parseInt(selection);
// 컴퓨터의 결과/////////////////////////////////////////////////////////
java.util.Random rd=new java.util.Random();
int com=1+rd.nextInt(3); // 1~3
//가위바위보결과////////////////////////////////////////////////////////
if(sel==com)CurrentResult="무승부";
else if((sel==1 && com==2)||(sel==2 && com==3)||(sel==3 && com==1))
{
CurrentResult="패";
TotalLose+=1;
}
else
{
CurrentResult="승";
TotalWin+=1;
}
}
// 처리된 새로운 값으로 계산해서 세션에 넣기//////////////////////////////////
session.setAttribute("TotalWin",TotalWin);
session.setAttribute("TotalLose",TotalLose);
%>
<html>
<head>
<title>가위바위보의 경기 기록은 Session에 저장되어야 합니다.</title>
</head>
<%
if(selection!=null)
{
%>
<div style="border:2px sold #E88; padding-top:20px; width:400px; height:60px; font-size:18px;">
이번 가위바위보의 결과는, 당신의 <%=CurrentResult%>입니다.
</div>
<%
}
%>
<form name="game" action="game.jsp" method="post">
<input type="radio" name="selection" value="1" >가위
<input type="radio" name="selection" value="2" >바위
<input type="radio" name="selection" value="3" >보
<input type="submit" value="가위바위보!">
</form>
<div style="border:1px sold #AAA; width:400px; height:20px;">
현재까지의 기록 : <%=TotalWin%> 승 <%=TotalLose%> 패 </div>
</html>
javascript 박스클릭 이동
////////////////////////////////////////////////////////////////////////
// 2009. 11. 10 Yang.Nam.Seok
////////////////////////////////////////////////////////////////////////
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
<style type="text/css">
div {
position:absolute; /* 객체의 이동을위해 */
width:100px; /* 객체의 가로 크기 */
height:100px; /* 객체의 세로 크기 */
background:#ffff00; /* 객체의 색(노란색) */
}
</style>
<script>
var moveflag=false; /*객체의 이동 상태 저장 */
function moveS(ev)
{
moveflag=true;
}
function moveE()
{
moveflag=false;
}
function move(ev)
{
if(moveflag)
{
unit.style.top=ev.clientY-50;
unit.style.left=ev.clientX-50;
}
}
</script>
</head>
<body onMouseMove="move(event);" onMouseUp="moveE();">
<center>
<div id="unit" onMouseDown="moveS(event);"></div>
</center>
</body>
</html>
2009년 8월 24일 월요일
SI, SM, ERP, EIP, EAI, CMMS, CRM, SCM, GW, KMS 란?
SI, SM, ERP, EIP, EAI, CMMS, CRM, SCM, GW, KMS 란?
1. SI (System Integration)
시스템 구성 요소들을 순차적으로 결합하여 하나의 전체 시스템을 구축하는 과정으
로 일반적인 전산 시스템 개발을 말합니다. 요즘은 Java나 .net 등을 많이 이용
하지요.
2. SM (System Management)
이미 만들어진 시스템을 유지보수 하는 일을 말합니다. 프로그램 수정이나 신규
프로세스를 구현하고 데이터 관리등 많은 일을 하게 됩니다. 쉽게 말해서 일반적
인 회사 전산실에서 하는 업무입니다.
3. ERP (Enterprise Requirement Planning)
조직 전반의 관리를 할 수 있도록 만든 시스템 이구요. 그 발전 과정과 내용은
아래의 링크에서 확인 하십시오.
http://kin.naver.com/browse/db_detail.php?dir_id=10102&docid=458280
Any software system designed to support and automate the business processes
of medium and large businesses. This may include manufacturing, distribution,
personnel, project management, payroll, and financials.
ERP systems are accounting-oriented information systems for identifying and
planning the enterprise-wide resources needed to take, make, distribute, and
account for customer orders. ERP systems were originally extensions of MRP II
systems, but have since widened their scope. An ERP system also differs from
the typical MRP II system in technical requirements such as relational
database, use of object oriented programming language, computer aided
software engineering tools in development, client/server architecture, and
open system portability.
4. EIP (Enterprise Information Portal)
쉽게 생각해서 아침에 출근해서 PC 켜서 특정 홈페이지에 들어가면 우리 회사에
관련된 모든 프로세스 중에 나와 관련된 프로세스를 한눈에 파악할 수 있도록
만든 프로그램이라고 생각하시면 됩니다.
자세한 사항은 아래의 링크를 참조하세요.
http://kin.naver.com/browse/db_detail.php?dir_id=113&docid=1273
In today's competitive and ever-growing market, it takes more than just
having various applications in the right place. To carry business
successfully, the most essential and needed element is to bring multiple
resources of enterprises and people together making them responsible,
accountable and traceable. Enterprise information portals connect multiple
types of users with differentiated and personalized access to applications,
functions, and information depending on the relationship they have with the
enterprise.
5. EAI (Enterprise Application Integration)
보통의 회사에서 전산실을 가보면 여러가지 시스템들이 운영되는것을 쉽게 볼 수
있습니다. 회계 시스템, 생산 현장 관리, 홈페이지, 외부 조달 구매 등등 이런 시
스템 들을 서로 연결 시켜 주는 시스템이라고 생각하시면 됩니다.
가운데 EAI 라는걸 두고서 서로 연결하는거지요.
자세한 사항은 아래의 링크를 참조하세요
http://kin.naver.com/browse/db_detail.php?dir_id=113&docid=305907
The use of middleware to integrate the application programs, databases,
and legacy systems involved in an organisation's critical business processes.
6. CMMS (Cumputerized Maintenance Management System)
설비관리시스템의 진보된 형태로 생각하시면 됩니다. 단순히 설비효율관리나 자재
관리만 하는것이 아니라 설비에 관련되어 경영현황에서 파악해야될 모든 내용을
담고 있는 시스템이라고 생각하시면 됩니다.
자세한 사항은 아래의 링크를 참조하세요
http://www.emaintec.com/business/business_02_2.html
7. CRM (Customer Relationship Management)
고객들의 성향이나 우리 회사와의 관계등을 관리하여 향후에 잘 활용하고자 만든
시스템입니다. 쉬운 예로 우리가 홈쇼핑에서 물건을 사기 위해서 전화를 화면 콜
센터 담당자의 컴퓨터 모니터에 자동으로 전화건 사람의 과거 구매이력과 반품
이력등이 뜨게 되어 있습니다. 그렇게 해서 고객 대응도를 향상 시키고 충성도를
높일 수 있지요.
자세한 사항은 아래의 링크를 참조하세요
http://kin.naver.com/browse/db_detail.php?dir_id=408&docid=4853
Enterprise-wide software applications that allow companies to manage every
aspect of their relationship with a customer. The aim of these systems is to
assist in building lasting customer relationships - to turn customer
satisfaction into customer loyalty.
8. SCM (Supply Chain Management)
직역을 하자면 공급망관리 입니다. 즉, 회사의 구매와 판매에 관련된 모든 내용을
정리하고 그 연관관계를 정립하여 관리함으로서 최적의 공급망 조건을 산출해 내어
비용을 절감하고 고객 만족을 최대로 하기 위해서 만들어진 시스템입니다.
자세한 사항은 아래의 링크를 참조하세요
http://www.supply-chain.org/
The term supply chain refers to the entire network of companies that work
together to design, produce, deliver, and service products. In the past,
companies focused primarily on manufacturing and quality improvements within
their four walls; now their efforts extend beyond those walls to encompass
the entire supply chain.
9. GW (Groupware)
쉽게 생각해서 회사 게시판과 전자 결재등을 하는 시스템입니다.
즉, 특정 Group 내의 커뮤니케이션을 원할히 하는 시스템이라고 할 수 있습니다.
요즘은 Groupware에서 좀 더 진보시켜 KMS로 팔고 다니는걸로 알 고 있습니다.
Software tools and technology to support groups of people working together on
a project, often at different sites.
10. KMS (Knowledge Management System)
지식관리시스템이라고 불려저서 뭔가 어려운 것이라 생각됩니다만, 간단히 축약
하면 회사에서 만들어지 문서들을 체계적으로 잘 불류해서 정리 할 수 있도록
하는 시스템이라고 할 수 있습니다.
언제 어디서 뭘 할려고 하는데 전에는 어떻게 했는지... 어떤 문서가 있었는지를
찾을 수 있도록 하는것이지요.
기존에는 DM (Document Management)라는 이름으로 불리우다가 GW의 기능을 흡수하
고 몇가지 철학을 보태서 KMS라고 불리웁니다.
http://kin.naver.com/browse/db_detail.php?dir_id=409&docid=17063
A distributed hypermedia system for managing knowledge in organisations.
KMS is a commercial system from Knowledge Systems, Inc. running on
workstations, based on previous research with ZOG at Carnegie Mellon
University.
2009년 8월 11일 화요일
2009년 8월 10일 월요일
구글 맵 사용
<!-- ++Begin Map Search Control Wizard Generated Code++ -->
<!--
// Created with a Google AJAX Search Wizard
// http://code.google.com/apis/ajaxsearch/wizards.html
-->
<!--
// The Following div element will end up holding the map search control.
// You can place this anywhere on your page
-->
<!-- Maps Api, Ajax Search Api and Stylesheet
// Note: If you are already using the Maps API then do not include it again
// If you are already using the AJAX Search API, then do not include it
// or its stylesheet again
//
// The Key Embedded in the following script tags is designed to work with
// the following site:
// http://momowani.java2u.co.kr
-->
<script src="http://maps.google.com/maps?file=api&v=2&key=ABQIAAAA8wtKV3ToaGccFDq39AbHgRS1myzwKulOU-s3-QpLrRaXyKM0XBRhcjWxjYEfsjT8ZCiqr54m3qPg8w" type="text/javascript"></script>
<script src="http://www.google.com/uds/api?file=uds.js&v=1.0&source=uds-msw&key=ABQIAAAA8wtKV3ToaGccFDq39AbHgRS1myzwKulOU-s3-QpLrRaXyKM0XBRhcjWxjYEfsjT8ZCiqr54m3qPg8w" type="text/javascript"></script>
<style type="text/css">
@import url("http://www.google.com/uds/css/gsearch.css");
</style>
<!-- Map Search Control and Stylesheet -->
<script type="text/javascript">
window._uds_msw_donotrepair = true;
</script>
<script src="http://www.google.com/uds/solutions/mapsearch/gsmapsearch.js?mode=new"
type="text/javascript"></script>
<style type="text/css">
@import url("http://www.google.com/uds/solutions/mapsearch/gsmapsearch.css");
</style>
<style type="text/css">
.gsmsc-mapDiv {
height : 300px;
}
.gsmsc-idleMapDiv {
height : 300px;
}
#mapsearch {
width : 500px;
padding: 4px;
}
</style>
<script type="text/javascript">
function LoadMapSearchControl() {
var options = {
zoomControl : GSmapSearchControl.ZOOM_CONTROL_ENABLE_ALL,
idleMapZoom : GSmapSearchControl.ACTIVE_MAP_ZOOM,
activeMapZoom : GSmapSearchControl.ACTIVE_MAP_ZOOM
}
new GSmapSearchControl(
document.getElementById("mapsearch"),
"<c:out value="${order.r_addr}"/>",
options
);
}
// arrange for this function to be called during body.onload
// event processing
GSearch.setOnLoadCallback(LoadMapSearchControl);
</script>
<!-- ++End Map Search Control Wizard Generated Code++ -->
<div id="mapsearch">
<span style="color:#676767;font-size:11px;padding:4px;">Loading...</span>
</div>
야후 맵 api
//야후지도//////////////////////////////////////////////////////////////////////////////
https://developer.apps.yahoo.com/wsregapp/index.php
Congratulations, nsyang@ymail.com, your application is now registered! Yeah!
Your application id is IqMT8BXV34HVI2jSt7eVEuCgHL.AnS0yv8b38uGM25kC10.mMYptntgh5Jui5al1z7PK.MO_Hg--
For application entrypoint -> http://momowani.java2u.co.kr
To view your current application ids, click here.
You may want to print this page for your records.
Here's what to do next.
http://kr.open.gugi.yahoo.com/wizard/wizard.php
//네이버지도//////////////////////////////////////////////////////////////////////////////
http://dev.naver.com/openapi/register
좌표 가져오기
http://map.naver.com/api/geocode.php?key=25423a407575f2be0a9dcbf543111121&query=경기도성남시정자1동25-1
마우스 커서모양을 손모양으로
style="cursor:hand"
위의 스타일을 이용해서 마우스 커서모양을 손모양으로 바꾸는데 IE에서는 정상적으로 적용이 되지만 Firefox에서는 안 된다.
찾아보니 "hand"가 아닌 "pointer"을 사용해야 한다고 한다.
pointer가 표준이다 .
style="cursor:pointer"
2009년 8월 8일 토요일
동적 INPUT 박스
미리보기 링크 : http://june44.com/board/blog/55
<SCRIPT language=JavaScript>
function make_input(f, nm) {
if(f.childNodes.item(0).name != nm) {
if(document.all) cont = f.innerText;
else cont = f.textContent;
if(cont.charCodeAt() == 32) cont = '';
f.innerHTML = "<input type=text name='"+nm+"' value='"+cont+"' style='width:250px;' onBlur='del_input(this);' onfocusout='del_input(this);'>";
f.childNodes.item(0).select();
f.childNodes.item(0).focus();
}
}
function del_input(f) {
var cont = f.value;
if(cont == '') cont = " ";
cont = cont.replace(/\s/, " ");
var innerVal = cont + "<input type=hidden name='"+f.name+"' value='"+cont+"'>";
f.parentNode.innerHTML = innerVal;
}
</SCRIPT>
<TABLE cellSpacing=1 cellPadding=0 width=300 align=center border=1>
<TBODY>
<TR align=middle height=25>
<TD onclick="make_input(this,'pm_upkeep[]')" align=middle width=300>여기를 클릭 해 보세요~^^ </TD></TR></TBODY></TABLE>
2009년 8월 7일 금요일
CLOB ....정리... 각 WAS 별
이놈에 CLOB라는게...
어떻게 WAS별로 설정이 조금씩 틀리군요..
정확히는..WAS별로 틀린게 아니라..WAS별로 datasource 설정이
틀려서 그런듯한데...
할때마다 CLOB 검색법 찾아서 하기도 지쳤습니다.
한번 정리 해봤습니다..
(중복이면 난감;; 개인적인 백업 목적도 있으니 중복이라도 야단치지 마세요;;)
import java.sql.Clob;
import weblogic.jdbc.common.OracleClob;
import oracle.jdbc.driver.OracleResultSet;
import oracle.sql.CLOB;
import org.apache.commons.dbcp.DelegatingResultSet;
String query1 = "select content from "+table+" where no="+ no + " for update";
con = getConnection();
con.setAutoCommit(false);//꼭 setAutoCommit을 false로 지정
pstmt = con.prepareStatement(query1);
rs = pstmt.executeQuery();
while (rs.next()){
/**********************************************
* Tomcat
* ********************************************/
Clob clob = rs.getClob(1);
Writer writer = ((CLOB)clob).getCharacterOutputStream();
Reader src = new CharArrayReader(contentData.toCharArray());
char[] buffer = new char[1024];
int read = 0;
while ( (read = src.read(buffer,0,1024)) != -1)
{
writer.write(buffer, 0, read); // write clob.
}
src.close();
writer.close();
/**********************************************
* weblogic
* ********************************************/
Clob clob = rs.getClob(1);
Writer writer = ((OracleClob)clob).getCharacterOutputStream();
Reader src = new CharArrayReader(contentData.toCharArray());
char[] buffer = new char[1024];
int read = 0;
while ( (read = src.read(buffer,0,1024)) != -1)
{
writer.write(buffer, 0, read); // write clob.
}
src.close();
writer.close();
/**********************************************
* sunone
* ********************************************/
Clob clob = rs.getClob(1);
Writer characterStream = clob.setCharacterStream(0);
characterStream.write(contentData);
characterStream.close();
/**********************************************
* interstage
* ********************************************/
CLOB clob = ((OracleResultSet)((DelegatingResultSet)rs).getDelegate()).getCLOB(1);
BufferedWriter writer = new BufferedWriter(clob.getCharacterOutputStream());
writer.write(form.getContent());
writer.close();
}
con.commit();
con.setAutoCommit(true);
http://okjsp.pe.kr/seq/98774 <== 에서 가져온 자료
JDBC Code Templates
JDBC Code Templates
1. Connection
*. To open a connection using thin driver :
DriverManager.getConnection("jdbc:oracle:thin:@<mc-name>:<port-no>:<sid>",
"scott", "tiger");
OR
DriverManager.getConnection("jdbc:oracle:thin:@(description=(address=(host=<mc-name>)(protocol=tcp)(port=<port-no>))(connect_data=(sid=<sid>)))",
"scott","tiger");
*. To open a connection using OCI driver.
To use the default connection.
DriverManager.getConnection("jdbc:oracle:oci8:@", "scott","tiger");
Or
DriverManager.getConnection("jdbc:oracle:oci8:@(description=(address=(host=<mc-name>)(protocol=tcp)(port=<port-no>))(connect_data=(sid=<sid>)))",
"scott","tiger");
Or
DriverManager.getConnection("jdbc:oracle:oci8:@<tns-name>", "scott","tiger");
*. Closing a connection.
conn.close();
*. To set auto commit on.
conn.setAutoCommit(true)
*. To set the batch size to 100
((OracleConnection)conn).setDefaultExecuteBatch (100);
2. Statements
*. To create a statement
Statement stmt = conn.createStatement();
*. To create a prepared Statement
PreparedStatement pstmt =
conn.prepareStatement ("insert into EMP (EMPNO, ENAME) values (?, ?)");
*. To Create a callable statement.
CallableStatement procnone = conn.prepareCall ("begin procnone; end;"
*. To execute a SQL that returns a QUERY
ResultSet rset = stmt.executeQuery ("select ENAME from EMP");
*. To execute a DML that returns the no of rows affected
PreparedStatement pstmt =
conn.prepareStatement ("insert into EMP (EMPNO, ENAME) values (123, 'John')");
int rows = pstmt.executeUpdate ();
Ps. execute and executeQuery can also be called on a PreparedStatement.
They return a boolean and resultSet respectively.
PreparedStatement pstmt =
conn.prepareStatement ("select ENAME from EMP where EMPNO = ?");
pstmt.setInt(1,123);
ResultSet rset = pstmt.executeQuery();
*. To execute a DDL.
boolean status = stmt.execute("create table temp(col1 int)");
*. To Bind an IN variable.
PreparedStatement pstmt =
conn.prepareStatement ("select ENAME from EMP where EMPNO = ?");
pstmt.setInt(1,123);
ResultSet rset = pstmt.executeQuery();
* To Bind an OUT variable
CallableStatement funcin = conn.prepareCall ("begin ? := funcout (?); end;");
funcout.registerOutParameter (1, Types.CHAR);
funcout.registerOutParameter (2, Types.CHAR);
Where funcout is,
create or replace function funcout (y out char)
return char is
begin
y := 'tested';
return 'returned';
end;
* To set the batch size to 100
((OracleStatement)stmt).setRowPrefetch (100);
* To explicitly send the row to the server in batch mode.
int rows = ((OracleStatement)stmt).sendBatch();
3. ResultSets
* Fetch the next row
rset.next();
* Retrieve data from column i based on column no
rset.getInt(i);
* Based on Column Name
rset.getInt("EMPNO");
* Close the resultset
rset.close();
4. Streams: Long columns in JDBC are streamed.
* To set a long (Stream) column
pstmt.setAsciiStream (1, <input-stream>, <input-stream-length>);
If the string data is in Unicode format, then use setUnicodeStream.
pstmt.setUnicodeStream (1, <input-stream>, <input-stream-length>);
For long raw columns, use setBinaryStream
pstmt.setBinaryStream (1, <input-stream>, <input-stream-length>);
create table streamexample (data long)
PreparedStatement pstmt =
conn.prepareStatement ("insert into streamexample values (?)");
InputStream is = new FileInputStream ("notes.txt");
File file = new File ("notes.txt");
pstmt.setAsciiStream (1, is, (int)file.length ());
* To retrieve a long column
ResultSet rset =
stmt.executeQuery ("select * from streamexample");
InputStream ascii_data = rset.getAsciiStream (1);
// Loop, reading from the gif stream and writing to the file
int c;
while ((c = ascii_data.read ()) != -1)
Systemm.out.print(c);
5. Objects
* How to create a STRUCT type descriptor
StructDescriptor type_descriptor =
StructDescriptor.createDescriptor (<type name>, connection);
* How to create a STRUCT object
Object[] attributes = { ... };
STRUCT obj = new STRUCT (<type descriptor>, connection, attributes };
* How to create a SQL to Java type map entry.
map.put (<SQL Type Name>, <Java class which implements SQLData interface>);
* How to retrieve a STRUCT column.
1. As a SQLData object.
For example, to map SQL type "PERSON" to Java class "PersonObj.java"
which implements oracle.jdbc2.SQLData interface:
java.util.Dictionary map = new Hashtable (10);
map.put ("PERSON", Class.forName ("PersonObj"));
PersonObj obj = (PersonObj) rset.getObject (1, map);
2. As a CustomDatum object
CustomDatum obj = rset.getCustomDatum (1, <CustomDatum factory>);
3. As a oracle.sql.STRUCT object
STRUCT obj = (STRUCT) rset.getObject (1);
* How to retrieve STRUCT attributes.
1. With Connection default type map.
STRUCT struct = ...
Object[] attributes = struct.getAttributes ();
2. With the requested type map.
java.util.Dictionary map = ...
STRUCT struct = ...
Object[] attributes = struct.getAttributes (map);
3. Without map, return as oracle Datums.
Datum[] attributes = struct.getOracleAttributes ();
* How to create a ARRAY type descriptor
ArrayDescriptor type_descriptor =
ArrayDescriptor.createDescriptor (<type name>, connection);
* How to create a ARRAY object
Object[] elements = { ... };
ARRAY obj = new ARRAY (<type descriptor>, connection, elements };
* How to retrieve a ARRAY column.
ARRAY obj = ((OracleResultSet) rset).getARRAY (1);
* How to retrieve ARRAY elements.
ARRAY array = (ARRAY) rset.getObject (1);
Object[] elements = array.getArray ();
or
Object[] elements = array.getArray (<type map for elements>);
or
Object[] elements = array.getArray (<begin index>, <count>);
or
Object[] elements = array.getArray (<begin index>, <count>, <type map>);
* How to retrieve ARRAY elements as a ResultSet which holding the elements.
ARRAY array = (ARRAY) rset.getObject (1);
ResultSet array_rset = array.getResultSet ();
or
ResultSet array_rset = array.getResultSet (<type map for elements>);
or
ResultSet array_rset = array.getResultSet (<begin index>, <count>);
or
ResultSet array_rset = array.getResultSet (<begin index>, <count>, <type map>);
* How to retrieve a REF column.
REF obj = ((OracleResultSet) rset).getREF (1);
* To access the value which a REF points to.
REF ref = ((OracleResultSet)rset).getREF (1);
Object value = ref.getValue (); // use connection default map
or
REF ref = ((OracleResultSet) rset).getREF (1);
Object value = ref.getValue (<type map>); // use specified map
* To change the value which a REF points to.
REF ref = ((OracleResultSet) rset).getREF (1);
Object newValue = ...;
ref.setValue (newValue);
6. LOBS
* To read a piece of a LOB.
BLOB blob = ((OracleResultSet) rset).getBLOB (1);
byte[] bytes = blob.getBytes (<begin index>, <length>);
CLOB clob = ((OracleResultSet) rset).getCLOB (2);
String str = clob.getSubString (<begin index>, <length>);
BFILE bfile = ((OracleResultSet) rset).getBFILE (3);
byte[] bytes = bfile.getBytes (<begin index>, <length>);
* To read the LOB content as a stream.
BLOB blob = ((OracleResultSet) rset).getBLOB (1);
InputStream input_stream = blob.getBinaryStream ();
input_stream.read (...);
CLOB Clob = ((OracleResultSet) rset).getCLOB (1);
Reader char_stream = Clob.getCharacterStream ();
char_stream.read (...);
CLOB Clob = ((OracleResultSet) rset).getCLOB (1);
InputStream input_stream = Clob.getAsciiStream ();
input_stream.read (...);
BFILE bfile = ((OracleResultSet) rset).getBFILE (1);
InputStream input_stream = bfile.getBinaryStream ();
input_stream.read (...);
* To write a specified amount of data into a LOB.
BLOB blob = ((OracleResultSet) rset).getBLOB (1);
byte[] data = ...
int amount_written = blob.putBytes (<begin index>, data);
CLOB clob = ((OracleResultSet) rset).getCLOB (1);
String data = ...
int amount_written = clob.putString (<begin index>, data);
* To replace the LOB content from a stream.
BLOB blob = ((OracleResultSet) rset).getBLOB (1);
OutputStream output_stream = blob.getBinaryOutputStream ();
output_stream.write (...);
CLOB clob = ((OracleResultSet) rset).getCLOB (1);
Writer char_stream = Clob.getCharacterOutputStream ();
char_stream.write (...);
CLOB Clob = ((OracleResultSet) rset).getCLOB (1);
OutputStream output_stream = Clob.getAsciiOutputStream ();
output_stream.write (...);
* To get LOB length.
long length = blob.length ();
long length = clob.length ();
long length = bfile.length ();
오라클 sys, system암호 까먹었을때
오라클 sys, system암호 까먹었을때
명령 프롬프트에서 다음을 실행합니다.
C:>sqlplus "/as sysdba"
SQL> show user
USER is "SYS"
암호를 원하는 대로 설정합니다.
SQL> alter user sys identified by 암호;
SQL> alter user system identified by 암호;
접속
SQL> connect sys/암호 as sysdba
SQL> connect systemp/암호
[출처] [오라클계정]sys&system계정 암호 모를 때|작성자 ichonci
오라클과 NLS
오라클과 NLS
- KO16KSC5601
- KO16MSWIN949
- UTF8
- AL32UTF8
http://www.oracle.com/technology/global/kr/pub/columns/oracle_nls_1.html
select * from NLS_DATABASE_PARAMETERS where PARAMETER='NLS_CHARACTERSET'
set NLS_LANG=KOREAN_KOREA.AL32UTF8
다국어 처리를 위해
update sys.props$ set value$='AL32UTF8' where name='NLS_CHARACTERSET';
update sys.props$ set value$='AL32UTF8' where name='NLS_NCHAR_CHARACTERSET';
2009년 8월 6일 목요일
게시판 글자 줄임 스타일로 하기
게시판 글자 줄임 스타일로 하기
<div style="width:90px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;">글짜</div>
글짜가 90px이상되면 자동으로 ...이 생긴다
2009년 8월 5일 수요일
onKeydown keycode표
C의 아스키 값과 다르다... 참고하자!!
1. event.keycode : 키가 눌렸을때 키값을 얻는 것.(예로 엔터키를 누르면 13을 얻음.)
2. fromCharCode : 키값에 해당하는 아스키값을 얻음.(예로 A는 키코드 65이며 65 키코드가 fromCharCode를 거치면 A가 검출.)
이벤트(Event) Key code 정리 | |||
키코드 |
사용키(기능키) |
키코드 |
사용키(문자키) |
8 |
<백스페이스>키 |
65 |
A 키 |
9 |
<Tab>키 |
66 |
B 키 |
12 |
<Clear>키 |
67 |
C 키 |
13 |
<Enter>키 |
68 |
D 키 |
16 |
<Shift>키 |
69 |
E 키 |
17 |
<Ctrl>키 |
70 |
F 키 |
18 |
<Menu>키 |
71 |
G 키 |
19 |
<Pause>키 |
72 |
H 키 |
20 |
<Caps Lock>키 |
73 |
I 키 |
21 |
<한/영>키 |
74 |
J 키 |
25 |
<한자>키 |
75 |
K 키 |
27 |
<Esc>키 |
76 |
L 키 |
32 |
<스페이스바>키 |
77 |
M 키 |
33 |
<Page Up>키 |
78 |
N 키 |
34 |
<Page Down>키 |
79 |
O 키 |
35 |
<End>키 |
80 |
P 키 |
36 |
<Home>키 |
81 |
Q 키 |
37 |
<왼쪽 화살표>키 |
82 |
R 키 |
38 |
<위쪽 화살표>키 |
83 |
S 키 |
39 |
<오른쪽 화살표>키 |
84 |
T 키 |
40 |
<아래쪽 화살표>키 |
85 |
U 키 |
41 |
<Select>키 |
86 |
V 키 |
42 |
<Print Screen>키 |
87 |
W 키 |
43 |
<Execute>키 |
88 |
X 키 |
44 |
<Snapshot>키 |
89 |
Y 키 |
45 |
<Ins>키 |
90 |
Z 키 |
46 |
<Del>키 |
|
|
47 |
<Help>키 |
|
|
91 |
<왼쪽 윈도우>키 |
|
|
92 |
<오른쪽 윈도우>키 |
|
|
144 |
<Nun Lock>키 |
|
|
145 |
<Scroll Lock>키 |
|
|
키코드 |
사용키(숫자키) |
키코드 |
사용키(숫자 키패드) |
48 |
0 키 |
96 |
0 키 |
49 |
1 키 |
97 |
1 키 |
50 |
2 키 |
98 |
2 키 |
51 |
3 키 |
99 |
3 키 |
52 |
4 키 |
100 |
4 키 |
53 |
5 키 |
101 |
5 키 |
54 |
6 키 |
102 |
6 키 |
55 |
7 키 |
103 |
7 키 |
56 |
8 키 |
104 |
8 키 |
57 |
9 키 |
105 |
9 키 |
|
|
106 |
곱하기 기호(*) 키 |
|
|
107 |
더하기 기호(+) 키 |
|
|
108 |
|
|
|
109 |
빼기 기호(-) 키 |
|
|
110 |
소수점(.)키 |
|
|
111 |
나누기 기호(/) 키 |
키코드 |
사용키(펑션키) |
키코드 |
사용키(특수문자) |
112 |
F1 키 |
186 |
; |
113 |
F2 키 |
187 |
= |
114 |
F3 키 |
188 |
, |
115 |
F4 키 |
189 |
- |
116 |
F5 키 |
190 |
. |
117 |
F6 키 |
191 |
/ |
118 |
F7 키 |
192 |
` |
119 |
F8 키 |
219 |
[ |
120 |
F9 키 |
220 |
\ |
121 |
F10 키 |
221 |
] |
|
|
222 |
' |