function checkNumber(str) {
var flag=true;
if (str.length > 0) {
for (i = 0; i < str.length; i++) {
if (str.charAt(i) < '0' || str.charAt(i) > '9') {
flag=false;
}
}
}
return flag;
}
// str은 모두 소문자여야하고 첫글자는 영문이어야 한다. 영문과 0~9, -, _, ^는 허용한다.
function CheckChar(str) {
strarr = new Array(str.length);
var flag = true;
for (i=0; i<str.length; i++) {
strarr[i] = str.charAt(i)
if (i==0) {
if (!((strarr[i]>='a')&&(strarr[i]<='z'))) {
flag = false;
}
} else {
if (!((strarr[i]>='a')&&(strarr[i]<='z')||(strarr[i]>='0')&&(strarr[i]<='9')||(strarr[i]=='-')||(strarr[i]=='_')||(strarr[i]=='^'))) {
flag = false;
}
}
}
if (flag) {
return true;
} else {
return false;
}
}
// str은 모두 영문소문자여야 한다.
function CheckChar2(str) {
strarr = new Array(str.length);
var flag = true;
for (i=0; i<str.length; i++) {
strarr[i] = str.charAt(i)
if (!((strarr[i]>='a')&&(strarr[i]<='z'))) {
flag = false;
}
}
if (flag) {
return true;
} else {
return false;
}
}
// 이메일 체크
function CheckMail(strMail) {
/** 체크사항
- @가 2개이상일 경우
- .이 붙어서 나오는 경우
- @.나 .@이 존재하는 경우
- 맨처음이.인 경우
- @이전에 하나이상의 문자가 있어야 함
- @가 하나있어야 함
- Domain명에 .이 하나 이상 있어야 함
- Domain명의 마지막 문자는 영문자 2~4개이어야 함 **/
var check1 = /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/;
var check2 = /^[a-zA-Z0-9\-\.\_]+\@[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,4})$/;
if ( !check1.test(strMail) && check2.test(strMail) ) {
return true;
} else {
return false;
}
}
// str은 한글이어야만 한다.
function CheckHangul(str) {
strarr = new Array(str.length);
schar = new Array('/','.','>','<',',','?','}','{',' ','\\','|','(',')','+','=');
flag = true;
for (i=0; i<str.length; i++) {
for (j=0; j<schar.length; j++) {
if (schar[j] ==str.charAt(i)) {
flag = false;
}
}
strarr[i] = str.charAt(i)
if ((strarr[i] >=0) && (strarr[i] <=9)) {
flag = false;
} else if ((strarr[i] >='a') && (strarr[i] <='z')) {
flag = false;
} else if ((strarr[i] >='A') && (strarr[i] <='Z')) {
flag = false;
} else if ((escape(strarr[i]) > '%60') && (escape(strarr[i]) <'%80') ) {
flag = false;
}
}
if (flag) {
return true;
} else {
return false;
}
}
//주민번호 자동 탭
var isNN = (navigator.appName.indexOf("Netscape")!=-1);
function autoTab(input,len, e) {
var keyCode = (isNN) ? e.which : e.keyCode;
var filter = (isNN) ? [0,8,9] : [0,8,9,16,17,18,37,38,39,40,46];
if(input.value.length >= len && !containsElement(filter,keyCode)) {
input.value = input.value.slice(0, len);
input.form[(getIndex(input)+1) % input.form.length].focus();
}
function containsElement(arr, ele) {
var found = false, index = 0;
while(!found && index < arr.length)
if(arr[index] == ele)
found = true;
else
index++;
return found;
}
function getIndex(input) {
var index = -1, i = 0, found = false;
while (i < input.form.length && index == -1)
if (input.form[i] == input)index = i;
else i++;
return index;
}
return true;
}
//주민번호 유효성 체크
function CheckJuminNo(reg1, reg2) { //주민번호 앞,뒤자리 받는다
var strresidentid1 = reg1.value;
var strresidentid2 = reg2.value;
var strresidentid=strresidentid1+strresidentid2;
var ck;
if ( strresidentid1.length < 6) {
alert ("주민등록번호 길이가 정확하지 않습니다.!!");
document.write.st_strSsn1.focus();
return false;
}
if ( strresidentid2.length < 7 ) {
alert ("주민등록번호 길이가 정확하지 않습니다.!!");
document.write.st_strSsn2.focus();
return false;
}
var chk=0;
for (var i=0;i<=5;i++){
chk=chk+((i%8+2)*parseInt(strresidentid1.substring(i,i+1)));
}
for (var i=6;i<=11;i++){
chk=chk+((i%8+2) *parseInt(strresidentid2.substring(i-6,i-5)));
}
chk=11-(chk%11);
chk=chk%10;
if (chk!=strresidentid2.substring(6,7)){
alert("잘못된 주민등록번호입니다.");
document.write.st_strSsn1.value="";
document.write.st_strSsn2.value="";
document.write.st_strSsn1.focus();
return false;
}
var str19 = '19';
var yy = strresidentid1.substr(0, 2); //년
var mm = strresidentid1.substr(2, 2);//월
var dd = strresidentid1.substr(4, 2);//일
var yunyear;
//윤년 2월의 날짜수 지정
var stryy = str19 + yy; //19??년
if ((stryy % 4 == 0) && (stryy % 100 != 0) || (stryy % 400 == 0))
yunyear = 29;
else
yunyear = 28;
//1~12 월
if ((mm <= 0) || (mm > 12)) {
alert("생년월일이 맞지 않습니다.");
document.write.st_strSsn1.select();
return false;
}
//마지막날이 31일인 월체크
if ((mm == 1 || mm == 3 || mm == 5 || mm == 7 || mm == 8 || mm == 10 || mm == 12) && (dd > 31 || dd <= 0)) {
alert("생년월일이 맞지 않습니다.");
document.write.st_strSsn1.select();
return false;
}
//마지막날이 30일인 월체크
if ((mm == 4 || mm == 6 || mm == 9 || mm == 11) && (dd > 30 || dd <= 0)) {
alert("생년월일이 맞지 않습니다.");
document.write.st_strSsn1.select();
return false;
}
//윤년의 경우 2월의 마지막날 체크
if (mm == 2 && (dd > yunyear || dd <= 0)) {
alert(stryy + "생년월일이 맞지 않습니다." + yunyear);
document.write.st_strSsn1.select();
return false;
}
//주민번호 뒤자리 1이나 2,2000년 이후출생자는 3,4
var first=strresidentid2.substr(0,1);
if (!((first== 1) || (first == 2) || (first== 3) || (first== 4))) {
alert("주민등록번호 뒷자리의 시작은 1~4입니다.");
document.write.st_strSsn2.select();
return false;
}
var tmpname="주민번호";
//숫자인지 체크
var flag=isNum(strresidentid,tmpname);
if (flag==false){
document.write.st_strSsn1.value="";
document.write.st_strSsn2.value="";
document.write.st_strSsn1.focus();
return;
}
}//CheckJuminNo끝
//주민번호 체크 로직
function CheckSocialNo(socialno)
{
var i;
var val0, val1, val2, val3, val4, val5, val6, val7, val8, val9, val10, val11, val12;
var sum, checkno;
if (socialno.length != 13)
return false;
for (i = 0; i < 13; i++) {
if ((socialno.charAt(i) < '0') || (socialno.charAt(i) > '9'))
return false;
}
if ((socialno.charAt(6) < '1') || (socialno.charAt(6) > '4'))
return false;
month = parseInt(socialno.charAt(2))*10 + parseInt(socialno.charAt(3))
day = parseInt(socialno.charAt(4))*10 + parseInt(socialno.charAt(5))
if ((month == 1) || (month == 3) || (month == 5) || (month == 7) || (month == 8) || (month == 10) || (month == 12)) {
if ((day < 0) || (day > 31))
return false;
}
if ((month == 2)) {
if ((day < 0) || (day > 29))
return false;
}
if ((month == 4) || (month == 6) || (month == 9) || (month == 11)) {
if ((day < 0) || (day > 30))
return false;
}
val0 = parseInt(socialno.charAt(0)) * 2;
val1 = parseInt(socialno.charAt(1)) * 3;
val2 = parseInt(socialno.charAt(2)) * 4;
val3 = parseInt(socialno.charAt(3)) * 5;
val4 = parseInt(socialno.charAt(4)) * 6;
val5 = parseInt(socialno.charAt(5)) * 7;
val6 = parseInt(socialno.charAt(6)) * 8;
val7 = parseInt(socialno.charAt(7)) * 9;
val8 = parseInt(socialno.charAt(8)) * 2;
val9 = parseInt(socialno.charAt(9)) * 3;
val10 = parseInt(socialno.charAt(10)) * 4;
val11 = parseInt(socialno.charAt(11)) * 5;
val12 = parseInt(socialno.charAt(12));
sum = val0 + val1 + val2 + val3 + val4 + val5 + val6 + val7 + val8 + val9 + val10 + val11;
checkno = (11 - (sum % 11)) % 10;
if (checkno == val12) {
return true;
}
else {
return false;
}
}
C:\oratest\SOSORI2_1.DBF 파일 생성 기존에 sosori.dbf 파일이 꽉 찾기 때문에
sosori2_1.dbf 라고 따로 생성해준다
select sequence_name from user_sequences;
drop sequence seq_시퀀스명;
create sequence seq_시퀀스명 increment by 1 start with 1;
--------------------------------------------------------------------------------
1.아래의 사이트에서 우편번호 파일을 다운로드 받은 후,
엑셀에서 열고 다시 CSV파일로 변환 저장한다.(파일명-POST.CSV)
---------------------------------------------------------------------------------
http://www.postman.pe.kr/zipcode/index.html
---------------------------------------------------------------------------------
2.컨트롤 파일을 아래와 같이 작성 한 후, 원하는 폴더에 파일명은 POST.CTL 저장한다.
---------------------------------------------------------------------------------
load data
infile 'post.csv'
insert into table post
fields terminated by ','
(zipcode,sido,gugun,dong,bunji,seq)
---------------------------------------------------------------------------------
3.POST 테이블을 생성한다.
---------------------------------------------------------------------------------
CREATE TABLE POST(
zipcode varchar2(10)
,sido varchar2(50)
,gugun varchar2(100)
,dong varchar2(100)
,bunji varchar2(50)
,seq number
,primary key(seq)
)
---------------------------------------------------------------------------------
4.DOS 콘솔에서 SQLLDR 명령어로 SQL로더 프로그램을 수행시킨다.
---------------------------------------------------------------------------------
SQLLDR USERID=아이디/패스 CONTROL='POST.CTL' DATA='POST.CSV'
---------------------------------------------------------------------------------
5.만일 입력이 수행되다가 중단되면 테이블스페이스의 용량때문일 수 있는데,
이때는 다음과 같이 데이터베이스 파일 사이즈를 변경시킨다.
---------------------------------------------------------------------------------
ALTER DATABASE
DATAFILE 'DBF의 물리적 하드경로' RESIZE 변경할 크기(숫자)
[출처] 자바놀이터 cafe.naver.com/sikurah
$sqlplus /nolog
sql>connect / as sysdba
sql>create user user1 identifed by user1passwd default tablespace user temporary tablespace temp;
sql>grant connect,resource to user1;
▩ Oracle Setting
---------------------------------------------------------------------------
1. 오라클 계정 설정 전체 작업
※C:\oracle\data\200703 폴더는 미리 만들어야 합니다.
-- 테이블 스페이스 생성
CREATE TABLESPACE 테이블스페이스이름
DATAFILE 'C:\oracle\data\200703\TS_ojt_03_239.dbs' size 20M
DEFAULT STORAGE (initial 128k next 64k pctincrease 10);
-- 테이블 스페이스 자동 증가 생성
CREATE TABLESPACE auto_seg_ts
DATAFILE 'C:\ORADATA\auto_seg_ts.dbf' SIZE 1M
EXTENT MANAGEMENT LOCAL
SEGMENT SPACE MANAGEMENT AUTO ;
-- 테이블 스페이스 목록
SELECT tablespace_name, status, contents
FROM dba_tablespaces
WHERE tablespace_name LIKE '테이블스페이스이름%'
ORDER BY tablespace_name;
-- 사용자 생성
CREATE USER 사용자이름 IDENTIFIED BY 비밀번호
DEFAULT TABLESPACE 테이블스페이스이름
TEMPORARY TABLESPACE temp;
-- 등록된 계정 목록 보기
SELECT username, user_id FROM dba_users
WHERE username LIKE '사용자이름%' ORDER BY username;
-- 권한 주기
GRANT connect, resource TO 사용자이름;
※ Oracle 설정 참고
1. 테이블 스페이스 생성
- 테이블 스페이스 생성시 "C:\oracle\data\200703" 폴더는 미리 만들어야 합니다.
CREATE TABLESPACE 테이블스페이스이름
DATAFILE 'C:\oracle\data\200703\TS_ojt_03_239.dbs' size 20M
DEFAULT STORAGE (initial 128k next 64k pctincrease 10);
2. 테이블 스페이스 목록 보기
SELECT tablespace_name, status, contents
FROM dba_tablespaces
WHERE tablespace_name LIKE '테이블스페이스이름%'
ORDER BY tablespace_name;
3. 테이블 스페이스의 사용 가능한 공간 보기
SELECT tablespace_name, bytes, blocks
FROM dba_free_space
ORDER BY tablespace_name;
4. TableSpace의 삭제 : DROP TABLESPACE 테이블스페이스이름;
- 테이블 스페이스를 삭제해도 하드디스크상에 데이터 파일은 남아 있음으로
"D:\oracledata\200601" 상에서도 파일을 삭제해야 합니다.
ALTER TABLESPACE 테이블스페이스이름 OFFLINE;
DROP TABLESPACE 테이블스페이스이름 INCLUDING CONTENTS AND DATAFILES;
SELECT tablespace_name, status, contents FROM dba_tablespaces ORDER BY tablespace_name;
5. 사용자 계정 생성 및 권한 지정
- 계정의 종류
. SYS: 오라클 데이터베이스 관리자
. SYSTEM: 오라클 데이터베이스 관리자, 모든 권한이 SYS와 같으나 데이터베이스 생성 권한 없음
. SCOTT, HR: SAMPLE 사용자 계정
- 계정의 생성
CREATE USER 사용자이름 IDENTIFIED BY 비밀번호
DEFAULT TABLESPACE 테이블스페이스이름
TEMPORARY TABLESPACE temp;
6. 등록된 계정 목록 보기
SELECT username, user_id FROM dba_users
WHERE username LIKE '사용자이름%' ORDER BY username;
7. 사용자 삭제
DROP USER 사용자이름
8. 권한 주기
- connect : 접속, 쿼리 실행, 테이블 생성
- resource : view, stored Procedure 등 서버의 자원을 만들고 쓸수 있는 권한
GRANT connect, resource TO 사용자이름;
#Oracle system 계정---------------------------------------------
SELECT * FROM tab;
--테이블 스페이스 생성(시 C:\oracle\data\200703 폴더는 미리 만들어야 합니다.)
CREATE TABLESPACE 테이블스페이스이름
DATAFILE 'C:\oracle\data\200703\TS_ojt_03_232.dbs' size 20M
DEFAULT STORAGE (initial 128k next 64k pctincrease 10);
--테이블 스페이스 목록
SELECT tablespace_name, status, contents
FROM dba_tablespaces
WHERE tablespace_name LIKE '테이블스페이스이름%'
ORDER BY tablespace_name;
--테이블 스페이스의 삭제, 파일은 탐색기에서 직접 삭제
DROP TABLESPACE 테이블스페이스이름;
--계정의 생성
CREATE USER ojt_03_232 IDENTIFIED BY oracle
DEFAULT TABLESPACE 테이블스페이스이름
TEMPORARY TABLESPACE temp;
--등록된 계정 목록 보기, 대문자(OJT_03)
SELECT username, user_id FROM dba_users
WHERE username LIKE '사용자이름%' ORDER BY username;
--권한주기
GRANT connect, resource TO 사용자이름;
--사용자 삭제
DROP USER 사용자이름;
처음실행할때 이런 에러가 발생하시면
eclipse설치 폴더에서 eclipse.ini파일을 수정하시면 됩니다.
========================================================
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize256M
-vmargs
-Dosgi.requireJavaVersion=1.5
-Xms40m
-Xms512m
위에 빨간색 표시 부분을 삭제하시고 다시 저장한뒤, eclipse를 실행하시면 됩니다.
오라클 한글깨짐 문제 처리법입니다.
원인은 오라클의 서버와 클라이언트간의 NLS_LANG설정문제 때문입니다.
이것을 일치시켜 주어야 하는데.
Step by Step.
시작 -> 실행
regedit으로 레지스트리 편집기를 열고, " HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\ "의 하위 폴더에보면 자신의 오라클베이스폴더가 있습니다. 그것을 클릭해보면 NLS_LANG키가 있는데. 키값을 KOREAN_KOREA.KO16MSWIN949 KOREAN_KOREA.KO16KSC5601 로 바꿔줍니다.
레지스트리편집기를 끈후 다시 시작 -> 실행
cmd로 커맨드입력창을 하나 띄웁니다.
sqlplus /nolog
conn /as sysdba;
update props$ set VALUE$='KO16MSWIN949' where name='NLS_CHARACTERSET';
commit;
shutdown immediate;(데이터베이스를 언마운트 하는작업이라 시간이 걸립니다.)
startup;
하시고 해당 테이블을 조회해 보시면 됩니다.
참고로 조회했는데 한글이 역시나 깨져보인다면 리부팅은 센스!!! 100% 해결될 것입니다.
// JSP에서의 JDBC연동을 통한 컬럼값 (주석처리 ㅋㅋ)
// 참고하세요!! KOREAN_KOREA.KO16KSC5601의 nls_lang 설정값은 완성형 문자코드가 아니면 저장이 되질 않습니다. 그리고 입력할 수 있는 문자열 길이가 짧아 향후 사용자제해야 할 캐릭터 셋이라고 합니다. 위 코드의 슈퍼셋인 KO16MSWIN949를 사용하시면 아무 문제없이 사용하실수 있습니다. 리눅스에서는 안됩니다. 리눅스에서는 아쉽게도 위의 코드셋을 쓰세요.
- 완성형 문자코드란?
일반적으로 쓰는 정상의 문자열로써, 비완성형 문자코드는
뷁뿕뽏햏햏 같은 기존의 한글조합이아닌 값을 말합니다.
고로 위와같은 글자들을 다 인식할 수 있는 것을 써야 하겠죠?
출처:http://blog.naver.com/fafoyoum?Redirect=Log&logNo=70021582158
