'Programming'에 해당되는 글 8건
- 2009.03.17 펼침 숨김 열기 닫기
- 2008.01.11 Windows 개발시 유용한 Utility
- 2008.01.11 ATL 컴파일 에러
- 2007.12.10 JAVA DB 연결 하기
- 2007.12.06 replaceAll 구현
- 2007.12.05 java 에서 unsigned int ( byte의 값을 int로 변환)
- 2007.12.05 텍스트 박스 포커스 다음 입력칸으로 자동 이동
- 2007.11.28 jar
펼침 숨김 열기 닫기
사용 방법
<a onclick="this.nextSibling.style.display=(this.nextSibling.style.display=='none')?'block':'none';" href="javascript:void(0)">열기!</a>
<div style="DISPLAY: none">
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
<a onclick="this.parentNode.style.display='none';" href="javascript:void(0)">닫기</a>
</div>
Windows 개발시 유용한 Utility
ATL 컴파일 에러
LIBCMT.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
와 같은 에러가 발생 할 경우
Project -> Setting -> c/c++ 탭 -> General 카테고리 -> Preprocessor Definition 에서
_ATL_MIN_CRT <-- 이것을 제거 한다.
JAVA DB 연결 하기
1.odbc인 경우
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con=DriverManager.getConnection("jbdc:odbc:FirstDB");
conn=DriverManager.getConnection("jbdc:odbc:DNSname","id","pass");
▒▒ 연결셋팅 ▒▒
시작→제어판→관리도구→데이터원본→시스템DSN→추가→microsoft access driver선택
2.oracle인경우
Class.forName("oracle.jdbc.driver.OracleDriver");
conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:system_id","scott",tiger");
▒▒ 연결셋팅 ▒▒
★윈도우환경셋
시작→제어판→관리도구→데이터원본→시스템DSN→추가→microsoft ODBC for Oracle선택
★직접셋팅
C:\oracle\product\10.2.0\db_1\jdbc\lib 폴더의 ojdbc14.jar 복사해서
C:\jdk1.6\jre\lib\ext 와 C:\jre1.6\lib\ext 에 복사
★mysql connector설치
홈페이지(www.mysq.com)에서 mysql-connector-java-5.1.0.zip다운후 압축풀고
mysql-connector-java-5.1.0-bin.jar 파일을 C:\jdk1.6\jre\lib\ext 와
C:\jre1.6\lib\ext 에 복사
★입클립스 셋팅
Window→reperences→installed JREs에서 jre1.6선택후 Edit클릭→JRE home directory에서 위에서 복사한
C:\oracle\product\10.2.0\db_1\jdbc\lib 폴더의 ojdbc14.jar선택→OK
★Db 이름 찾기
C:\oracle\product\10.2.0\db_1\NETWORK\ADMIN폴터의 tnsnames.ora파일을 열어서확인
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 702E3)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl) <--요기 orcl이 이름
)
)
3.mysql인경우
Class.forName("org.gjt.mm.mysql.Driver");
conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/myDB","root",kbj002");
Class.forName("com.mysql.Driver");
String url="jdbc:mysql://localhost:3306/test";
String id="root";
String pwd="";
con=DriverManager.getConnection(url,id,pwd);
---------------------------- Odbc 예 제 -----------------------------------------
import java.sql.*;
public class DriverTest{
public static void main(String grgs[]){
Connection con;
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection("jdbc:odbc:jdbc","java","java");
System.out.println("Success!");
}
catch(SQLException ex){System.out.println("SQLException:"+ex);}
catch(Exception ex){System.out.println("Exception:"+ex);}
}
}
----------------------------odbc 예 제 -----------------------------------------
import java.io.*;
import java.sql.*;
class JDBC_Select{
public static void main(String grgs[]){
String driver ="sun.jdbc.odbc.JdbcOdbcDriver";
String url="jdbc:odbc:jdbc";
Connection con=null;
Statement stmt=null;
ResultSet rs=null;
String sql="select * from member";
try{
Class.forName(driver);
con=DriverManager.getConnection(url,"java","java");
stmt=con.createStatement();
rs=stmt.executeQuery(sql);
System.out.println("ID1\t\t id\t\t pass\t\t name\t\t e_mail\t\t\t\t phone\t\t zipcode\t job");
System.out.println("-------------------------------------------------------------------------------------------");
while(rs.next()){
System.out.print(rs.getLong("ID1")+"\t\t");
System.out.print(rs.getString("id")+"\t\t");
System.out.print(rs.getString("pass")+"\t\t");
System.out.print(rs.getString("name")+"\t\t");
System.out.print(rs.getString("e_mail")+"\t\t");
System.out.print(rs.getLong("phone")+"\t\t");
System.out.print(rs.getString("zipcode")+"\t\t");
System.out.println(rs.getString("job")+"\t\t");
}
}catch(Exception e){
System.out.println("데이터 베이스 연결 실패");
}
finally{
try{
if(rs!=null)rs.close();
if(stmt!=null)stmt.close();
if(con!=null)con.close();
}catch(Exception e){
System.out.println(e.getMessage());
}
}
}
}
----------------------------odbc 예 제 -----------------------------------------
import java.io.*;
import java.sql.*;
class JDBC_Select1{
public static void main(String grgs[]){
String driver ="sun.jdbc.odbc.JdbcOdbcDriver";
String url="jdbc:odbc:jdbc1";
Connection con=null;
Statement stmt=null;
ResultSet rs=null;
String sql="select * from member";
try{
Class.forName(driver);
con=DriverManager.getConnection(url,"java","java");
stmt=con.createStatement();
rs=stmt.executeQuery(sql);
ResultSetMetaData rsm=rs.getMetaData();
int cols=rsm.getColumnCount();
for (int i=1; i<=cols; i++){
System.out.print(rsm.getColumnName(i)+"\t\t");
}
System.out.println();
while(rs.next()){
for(int i=1; i<=cols; i++){
System.out.print(rs.getObject(i)+"\t\t");
}
System.out.println();
}
}catch(Exception e){
System.out.println("데이터 베이스 연결 실패");
}
finally{
try{
if(rs!=null)rs.close();
if(stmt!=null)stmt.close();
if(con!=null)con.close();
}catch(Exception e){
System.out.println(e.getMessage());
}
}
}
}
---------------------------- Oracle 예 제 -----------------------------------------
import java.io.*;
import java.sql.*;
class JDBC_Select2{
public static void main(String grgs[]){
String driver ="oracle.jdbc.driver.OracleDriver";
String url="jdbc:oracle:thin:@localhost:1521:orcl";
Connection con=null;
Statement stmt=null;
ResultSet rs=null;
String sql="select * from emp";
try{
Class.forName(driver);
con=DriverManager.getConnection(url,"scott","tiger");
stmt=con.createStatement();
rs=stmt.executeQuery(sql);
ResultSetMetaData rsm=rs.getMetaData();
int cols=rsm.getColumnCount();
for (int i=1; i<=cols; i++){
System.out.print(rsm.getColumnName(i)+"\t\t");
}
System.out.println();
while(rs.next()){
for(int i=1; i<=cols; i++){
System.out.print(rs.getObject(i)+"\t\t");
}
System.out.println();
}
}catch(Exception e){
System.out.println("데이터 베이스 연결 실패");
}
finally{
try{
if(rs!=null)rs.close();
if(stmt!=null)stmt.close();
if(con!=null)con.close();
}catch(Exception e){
System.out.println(e.getMessage());
}
}
}
}
---------------------------- MySql 예 제 -----------------------------------------
import java.io.*;
import java.sql.*;
class JDBC_Select3{
public static void main(String grgs[]){
String driver ="com.mysql.jdbc.Driver";
String url="jdbc:mysql://localhost:3306/mysql";
Connection con=null;
Statement stmt=null;
ResultSet rs=null;
String sql="select * from personal";
try{
Class.forName(driver);
con=DriverManager.getConnection(url,"root","");
stmt=con.createStatement();
rs=stmt.executeQuery(sql);
ResultSetMetaData rsm=rs.getMetaData();
int cols=rsm.getColumnCount();
for (int i=1; i<=cols; i++){
System.out.print(rsm.getColumnName(i)+"\t\t");
}
System.out.println();
while(rs.next()){
for(int i=1; i<=cols; i++){
System.out.print(rs.getObject(i)+"\t\t");
}
System.out.println();
}
}catch(Exception e){
System.out.println("데이터 베이스 연결 실패");
}
finally{
try{
if(rs!=null)rs.close();
if(stmt!=null)stmt.close();
if(con!=null)con.close();
}catch(Exception e){
System.out.println(e.getMessage());
}
}
}
}
replaceAll 구현
java sdk 1.3 이하에서는 replaceAll이 구현되어 있지 않다.
public static String replaceAll( String source, String toReplace, String replacement )
{
int idx = source.lastIndexOf( toReplace );
if ( idx != -1 )
{
StringBuffer ret = new StringBuffer( source );
ret.replace( idx, idx+toReplace.length(), replacement );
while( (idx=source.lastIndexOf(toReplace, idx-1)) != -1 )
ret.replace( idx, idx+toReplace.length(), replacement );
source = ret.toString();
}
return source;
}
java 에서 unsigned int ( byte의 값을 int로 변환)
그런 문제가 발생한다면 아래와 같은 식으로 해주시면 됩니다.
int val = myByte < 0 ? ( Byte.MAX_VALUE + 1 ) * 2 + myByte : myByte;
코드를 보시면 왜 저렇게 써야하는지는 이해를 할 수 있으리라 보네요.
log 의 경우에도 이런식으로 하시면 될것 같구요, 그리고 특별히
Byte, Integer, Long 등의 래퍼클래스의 MAX_VALUE나 MIN_VALUE를 넘지 않는 한은
특별히 신경쓸 이유도 없습니다.(당연하겠지만...)
저도 정확히는 알 수 없습니다만, 자바에서는 자체적으로 BigDecimal 등을 이용해서
C보다 더 큰 숫자를 표현할 수 있는 방법을 제공해 주기 때문에 굳이 C처럼
unsigned 를 지원할 필요가 없다고 생각한게 아닐까요? 라는 생각을 해봤습니다.
텍스트 박스 포커스 다음 입력칸으로 자동 이동
<head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr" />
<title>무제 문서</title>
</head>
<script>
//다음 칸으로 이동
function moveFocus(num,here,next){
var str = here.value.length;
if(str == num)
next.focus();
}
</script>
<body>
<FORM METHOD='POST' NAME='modify' ACTION=''>
<table width="921" border="1" cellspacing="0" cellpadding="0">
<tr>
<td width="917">
<input type="text" name="gve_date_from" value="20070401" SIZE='9' onFocus="this.select()" maxlength=8 onKeyPress="onlyNum()" onKeyUp="moveFocus(8,this,this.form.gve_date_to);"> ~
<input type="text" name="gve_date_to" value="20070401" SIZE='9' onFocus="this.select()" maxlength=8 onKeyPress="onlyNum()">
1. 마우스 텍스트 박스 클릭하면 전체 선택. 2. 8자리 입력하면 자동으로 다음 텍스트 박스로 커서 이동.
</td>
</tr>
<tr>
<td>
<INPUT TYPE='text' NAME='regnum1' SIZE='6' MaxLength='6' onKeyUp="moveFocus(6,this,this.form.regnum2);"> -
<INPUT TYPE='text' NAME='regnum2' SIZE='7' MaxLength='7' >
1. 주민번호 앞자리 6자리 입력 후 다음 입력칸으로 이동.
</td>
</tr>
</table>
</form>
</body>
</html>
jar
1. 압축할때
jar cvf create.jar a.class b.class cDirectory
a.class,b.class,cDirectory를 create.jar라는 이름으로 생성합니다.
2. 압축풀때
jar xvf create.jar
create.jar의 내용을 추출합니다.
3. 압축된내용보기
jar tvf create.jar
create.jar의 내용을 봅니다.
사용법: jar {ctxu}[vfm0M] [jar-file] [manifest-file] [-C dir] files ...
옵션:
-c 새 아카이브를 만듭니다.
-t 아카이브에 대한 목차를 나열합니다.
-x 아카이브에서 명명된 (또는 모든) 파일을 추출합니다.
-u 기존의 아카이브를 업데이트합니다.
-v 표준 출력에 대한 자세한 정보 출력을 생성합니다.
-f 아카이브 파일 이름을 지정합니다.
-m 지정된 증명 파일에서 증명 정보를 포함시킵니다.
-0 저장만 수행하며 ZIP 압축을 사용하지 않습니다.
-M 입력 항목에 대한 증명 파일을 만들지 않습니다.
-i 지정된 jar 파일에 대한 색인 정보를 생성합니다.
-C 지정된 디렉토리로 변경하고 다음 파일을 포함시킵니다.
디렉토리인 파일이 하나라도 있으면 재귀적으로 처리됩니다.
'm' 및 'f' 플래그가 지정된 순서대로 증명 파일 이름과 아카이브 파일
이름을 지정해야 합니다.
예 1: classes.jar라는 아카이브 파일에 두 클래스 파일을 아카이브하려면 :
jar cvf classes.jar Foo.class Bar.class
예 2: 기존의 증명 파일 'mymanifest'를 사용하고 foo/ 디렉토리에 있는
모든 파일을 'classes.jar'로 아카이브합니다:
jar cvfm classes.jar mymanifest -C foo/ .