JDBCを使ってOracleへ接続し、DBへデータを挿入したいのですが、
日付型のデータがどうしてもうまく挿入できません。

jsp + Servlet + Bean で開発しています。

使っているテーブルは
CREATE TABLE USERS (
    USERID     VARCHAR2(10) NOT NULL,
    PASSWORD  VARCHAR2(10) NOT NULL,
    NAME      VARCHAR2(50) NULL,
    SEX       VARCHAR2(5)  NULL,
    BIRTHDAY   DATE       NULL,
    PRIMARY KEY (USERID, PASSWORD)
)
という風な型で、定義しています。

DBへのINSERT処理は、Beanで行っています。

以下のINSERT文を実行したのですが、うまくINSERTできませんでした。
String sqlQuery =
"INSERT INTO USERS (USERID, PASSWORD, NAME, SEX, BIRTHDAY)"
+ "VALUES ('use', 'pass', 'ナマエ', '女性', '1980/06/05')"
int numOfUpdate = statement.executeUpdate(sqlQuery);

ちなみに、この中のdate型で定義している「BIRTHDAY」を除いたINSERT文
String sqlQuery =
"INSERT INTO USERS (USERID, PASSWORD, NAME, SEX)"
+ "VALUES ('use', 'pass', 'ナマエ', '女性')"
int numOfUpdate = statement.executeUpdate(sqlQuery);
だとうまくINSERTできます。
sql*plusを使って直に書くと、両方うまくINSERTできました。

●その後に、「BIRTHDAY」をdate型からVARCHAR2(10)へ定義し直し、
 DBを作り直して実行した所、うまくINSERTできるようになりました。

なぜ「date型」だとINSERTできず、「VARCHAR2型」だとINSERTできるのか、
知っている方がおられましたら、ぜひ教えて頂きたいです。

A 回答 (1件)

始めましてDoubleです


"INSERT INTO USERS (USERID, PASSWORD, NAME, SEX, BIRTHDAY)"
+ "VALUES ('use', 'pass', 'ナマエ', '女性', '1980/06/05')"
この書き方だと'1980/06/05'の部分はテキストデータです
したがって
to_date('1980/06/05','YYYY/MM/DD')
と書き換えてあげれば大丈夫だと思います
試してみてください
    • good
    • 0
この回答へのお礼

わかりやすい御回答ありがとうございました。
日付の部分を書き直した所、うまくINSERTできました。
あのままではテキストデータになってしまうのですね!
本当に助かりました!

お礼日時:2001/10/22 10:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qc型肝炎はHしたらうつるのでしょうか?

今c型肝炎がテレビのニュースとかに出てるのですけど血液感染以外にエイズみたいにHしたら相手にうつるのでしょうか?
まったく知識がないので教えていただけませんか?
 

Aベストアンサー

C型肝炎が性行為で感染する確率は低いとされています。
しかし、血液感染するものですから、コンドームの使用をお勧めします。
性交渉の際、目には見えないような細かな傷が多数できるのです。そういった傷からの血液感染という可能性を否定することができませんから。
以上kawakawaでした

QMediaSize.findMedia(x, y, Size2DSyntax.INCH)がnullになる。

JavaでPNGファイルを印刷をしようとしています。
MediaSizeName sizeName = MediaSize.findMedia(x, y, Size2DSyntax.INCH);
↑のようにMediaSizeを取得しました。
1回目の実行では「6 in Page 3.14x6in 48c」という値が取得できたのですが、
2回目以降の実行では、sizeNameにnullが入ってきてしまいます。

原因を探っていますが、どこを調べればよいのかも分からない常態です。
なにかヒントをいただけないでしょうか?お願いします。

環境
Eclipse 3.0.1
j2sdk1.4.2_12
tomcat-5.0.28


-------------------------------------------------------------------------------
ソースの概要は以下のとおりです。
-------------------------------------------------------------------------------
FileInputStream filseStream = new FileInputStream("c:\\sample\\sample.png");
DocFlavor myFormat = DocFlavor.INPUT_STREAM.PNG;
Doc myDoc = new SimpleDoc(filseStream, myFormat, null);

float x = Float.parseFloat("3.14");
float y = Float.parseFloat("6");
MediaSizeName sizeName = MediaSize.findMedia(x, y, Size2DSyntax.INCH);

PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
aset.add(new Copies(1));
aset.add(sizeName);

PrintService[] services = PrintServiceLookup.lookupPrintServices(myFormat, aset);
DocPrintJob job = services[0].createPrintJob();
job.print(myDoc, aset);

-------------------------------------------------------------------------------

JavaでPNGファイルを印刷をしようとしています。
MediaSizeName sizeName = MediaSize.findMedia(x, y, Size2DSyntax.INCH);
↑のようにMediaSizeを取得しました。
1回目の実行では「6 in Page 3.14x6in 48c」という値が取得できたのですが、
2回目以降の実行では、sizeNameにnullが入ってきてしまいます。

原因を探っていますが、どこを調べればよいのかも分からない常態です。
なにかヒントをいただけないでしょうか?お願いします。

環境
Eclipse 3.0.1
j2sdk1.4.2_12
tomcat-5.0.28


-------...続きを読む

Aベストアンサー

素人です。
印刷APIは全くわからないので、
回答ではありませんが、、
ちょっと思ったこと。
---

1.単に
「メディアサイズ名」を直接に指定すればいいのでは?
「サイズ」から(「メディアサイズ名」を)判別しようとするのではなく。
http://java.sun.com/j2se/1.4/ja/docs/ja/api/javax/print/attribute/standard/MediaSizeName.html

---
2.
>aset.add(sizeName);

たぶんここで「メディアサイズ名の指定」をしない場合は、
「デフォルトの」メディアサイズ名が(内部で)使われるような気がします。


3.
>MediaSizeを取得しました。
>1回目の実行では「6 in Page 3.14x6in 48c」という値が取得できたのですが、
>2回目以降の実行では、sizeNameにnullが入ってきてしまい

この部分がよくわからないのですが…。
■『「6 in Page 3.14x6in 48c」という値』とは、なんの値?
 sizeNameインスタンスのの文字列表現(toString()の値)でしょうか。
■「1回目」「2回目」の意味が、よくわからないのですが…。
 findMedia()でnullが返ってきてもそれは仕様のようです。
 ですから、nullが返ってきても「不思議ではありません」。
 
 しかしこれが、
 「全く同じプログラムなのに、
 その実行のたびにfindMedia()の返り値がまちまち」
 だと「不思議」ですが…。

素人です。
印刷APIは全くわからないので、
回答ではありませんが、、
ちょっと思ったこと。
---

1.単に
「メディアサイズ名」を直接に指定すればいいのでは?
「サイズ」から(「メディアサイズ名」を)判別しようとするのではなく。
http://java.sun.com/j2se/1.4/ja/docs/ja/api/javax/print/attribute/standard/MediaSizeName.html

---
2.
>aset.add(sizeName);

たぶんここで「メディアサイズ名の指定」をしない場合は、
「デフォルトの」メディアサイズ名が(内部で)使われるような気がし...続きを読む

QB型肝炎のキャリアです。うつる??

19歳、遺伝性のB型肝炎のキャリアです。Hするときは相手の方にうつりますか??付き合って2ヶ月の彼氏がいて、きっとバレンタインに初Hすると思います。処女なので、出血するかもなんですが、その血で感染。。。なんてことはないですか?コンドームは絶対に使うつもりですが、心配です・・・。

Aベストアンサー

同じくキャリアです
Hしましたが、
ナニも起こりませんでした
相手の体の都合にもよるのでは?
感染の可能性はありますが、抗体を持つことが出来る
体質であれば何も問題は起きないものです
でも一応相手の了解は取ったほうがいいかと・・・

QJAXPでDOMを保存する際、'&'を'&'に展開したくない

当方JAXPでXMLを扱っています。
今悩んでいることなのですが、DOMオブジェクトを保存しようとすると、実態参照をつくることができません。
何かよい方法はありませんか?
また、実態参照について、私のほうに根本的な間違いや知らなければならないことがあるのでしょうか。
よろしくお願いします。

----------サンプルソース------------
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document document = builder.newDocument();
Element root = document.createElement("root");
// 実態参照を挿入
root.appendChild(document.createTextNode(""));
document.appendChild(root);
// DOMの状態では挿入したものがそのまま参照できる
System.out.println("on dom : " + root.getTextContent());
// 保存
Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.transform(new DOMSource(document), new StreamResult(System.out));
--------------結果-----------------
on dom :
<?xml version="1.0" encoding="UTF-8" standalone="no"?><root>&amp;nbsp;</root>
--------------望む結果--------------
on dom :
<?xml version="1.0" encoding="UTF-8" standalone="no"?><root></root>
--------------------------------------

当方JAXPでXMLを扱っています。
今悩んでいることなのですが、DOMオブジェクトを保存しようとすると、実態参照をつくることができません。
何かよい方法はありませんか?
また、実態参照について、私のほうに根本的な間違いや知らなければならないことがあるのでしょうか。
よろしくお願いします。

----------サンプルソース------------
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document document = builder.newDocument();
Element root = document.c...続きを読む

Aベストアンサー

中間報告:未解決

良く解るかもしれない議論。
http://pastaseca.blog119.fc2.com/blog-entry-37.html
http://pastaseca.blog119.fc2.com/blog-entry-38.html

QC型肝炎は尿でもうつるの?

身内にC型肝炎の患者がいるのですが、
便座についていたその患者の尿に気づかず
その上に座ってしまいました。血液で感染することは
知っているのですが、尿でも感染するのかと
気になっています。どうか、教えてください。

Aベストアンサー

気になるのなら調べましょうよ
C型は基本的に血液感染です むかーーーしは輸血とかってのが多かったですけどね こっちに関しては今は無いです
今あるのは麻薬とかの針の使いまわしですかね。
性行為感染とか母子感染とかもなくは無いですがほぼないと思ってください。

つまりその尿が血尿とかで今すぐでた物であり あなたの体内に入り直接粘膜に触れなければ感染しません。
便座についていた程度であれば感染確率は0です

Qjavascript:名('.$data.')で複数のデータを送る方法,(jqueryのload利用)

初めまして、jqueryを勉強し始めている初心者です。
jqueryのloadを利用して、PHPでページ分割作成してますが、
javascript:名('.$data.')で複数のデータを送る方法ご存知の方いましたら、教えていただけないでしょうか。。
何ぶん、勉強初めて、1ヶ月弱のため、不備等がれば、すみません。
hidden等でまとめてid作成すると、うまくページ分割ができませんでしたので
javascript:名('.$data.')で複数のデータを送る方法を検討しています。。
環境、jquery1.4, PHP5.0, eclipse3.5, mysql5.0
(sql等は問題なく動作してます)
//<php側抜粋--testo.php>
<html>
<head>
<script type="text/javascript" src="jquery1.4.js"></script>
<script type="text/javascript" src="testo.js"></script>
<title></title>
</head>
<body>
<div id="box"></div>
<?php
$nm=$_POST['nm'];
$page_num=$_POST['page_num'];

//echo'<a href="javascript:next('.$page.')">次のページへ>></a>';
//↑と1つの値であれば問題なく値をtesto.jsに渡しphploadできます。。

//↓のjavascript:名前('.データ値.')で、2つの値を
//testo.jsでphpに渡しloadしたい。
//↓の解決策すみませんがご存知でしたら、教えてください。
//------ここ質問(1)------
echo'<a href="javascript:next('.$page.','.$nm.')">次のページへ>></a>';
?></body></html>

//testo.js-----
/*function next(page)
{$("#box").load("testo.php",{page_num:page});}
 と1つの値であれば、POSTで正常にtesto.phpに渡せますが
 2つ値を渡したいので、
おそらく、全然ちがったり、間違えていると思います。。
調べてみましたが、分かりませんでした。。
*/
//--質問(2)↓--
function next(page,nm)
{$("#box").load("testo.php",{page_num:page,nm:nm});}

質問は上記(1)(2)です。全ソース記載したいのですが、
文字数オーバーのため、記載できませんでした。。
すみません
おそらく、不備や、勉強の不足さも感じるとは思いますが、
分かりやすく、ソース等で教えていただければ、幸いです。
すみません。。よろしくお願いいたします。

初めまして、jqueryを勉強し始めている初心者です。
jqueryのloadを利用して、PHPでページ分割作成してますが、
javascript:名('.$data.')で複数のデータを送る方法ご存知の方いましたら、教えていただけないでしょうか。。
何ぶん、勉強初めて、1ヶ月弱のため、不備等がれば、すみません。
hidden等でまとめてid作成すると、うまくページ分割ができませんでしたので
javascript:名('.$data.')で複数のデータを送る方法を検討しています。。
環境、jquery1.4, PHP5.0, eclipse3.5, mysql5.0
(sql等は問題な...続きを読む

Aベストアンサー

質問2の方で、2つ渡しているように見えるけど?

複数送る、は、きちんとできているのではなくて

QB,C型肝炎が歯科治療でうつる可能性は?

 上記の通りです。
ポイントは、歯医者での口腔処置の場合、一人一人使い捨てでない機器があると思うのですが、処置時に出血もありますのでB,C型肝炎の感染の可能性があるのではないかと思うのですがいかがでしょう?

Aベストアンサー

使い捨てでない機材であっても、リンク先のような消毒を行えば
ウイルスは除去されるようです。

しかしながら、消毒をされていない機器であれば、感染の可能性はあるということになります。
消毒していない機器を使っているような歯科があったとしたら、
ウイルスを撒き散らしているようなものです。

歯科の機器や理髪店のかみそりなど消毒が十分であると祈っています。

参考URL:http://www.mhlw.go.jp/bunya/kenkou/kekkaku-kansenshou09/02-10.html

QDate型からDate型への変換

Date型の変換について質問です。
Date dt = new Date();
とすると「Thu Jan 25 14:41:33 JST 2007」のような内容のDateオブジェクトが生成されますよね。

これを「2007-01-25 14:41:33.000115」のようにDBでよく使用される形式のDateオブジェクトに変換したいんです。

SimpleDateFormatのformatメソッドを使用して
String文字列「2007-01-25 14:41:33.000115」に変換して
SimpleDateFormatのparseメソッドを使用すれば
上手くいくかと思ったのですが
「Thu Jan 25 14:48:09 JST 2007」というDateオブジェクトが返されてしまいます。

どのようにすれば期待する動作を実現できるでしょうか?

初歩的な質問かもしれませんが、
有識者の方々ご教授いただけますでしょうか。

Aベストアンサー

>現在時刻は"EEE MMM dd HH:mm:ss zzz yyyy" 形式で取得されているため、
↑はjava.util.Dateのインスタンスですか?
であれば、
java.util.DateクラスのgetTimeメソッドでミリ秒を取得して、
そのミリ秒をコンストラクタへのパラメータとして
java.sql.Timestampのインスタンスを生成してはどうでしょうか?

java.util.Dateのインスタンスでないのであれば、
>SimpleDateFormatのformatメソッドを使用して
>String文字列「2007-01-25 14:41:33.000115」に変換して
>SimpleDateFormatのparseメソッドを使用すれば
>上手くいくかと思ったのですが
>「Thu Jan 25 14:48:09 JST 2007」というDateオブジェクトが返されてしまいます。
で取得できたjava.util.Dateのインスタンスからミリ秒を取得して、
…(以下省略)

Qキスでうつるものは

ある風俗嬢のブログにこう書かれていました。
¨キス感染¨
A型肝炎、B型肝炎、C型肝炎。
咽頭クラミジア、咽頭淋病。
HIVウィルス感染=エイズ。

キスでうつります。
キスで簡単にうつる。

あ、、歯周病も歯肉炎もね!!

みんなにありえる可能性。
SEXよりも身近な可能性。
キス感染。


とありましたが、この中で本当にキスで感染する可能性のあるもの

そしてそれに感染した場合に完全に直る病気なのか
完治は難しいのかを教えてください。

Aベストアンサー

咽頭クラミジア、咽頭淋病、口腔ヘルペスは移ります
歯周病は歯周病菌を持っていない人(赤ちゃんなどです。風俗に行く方で歯周病菌を持っていない、という方がいるとは思えませんが…)なら移ります

ヘルペスなど痒痛いブツブツができてかなり辛いです
確かに防ぎようがないという点でHIVより身近でキケンといえますね

Qpublic final void setTime(Date date)

以下のプログラムをコンパイルしようとすると
java.lang.Error: Unresolved compilation problem:
The method setTime(java.util.Date) in the type Calendar is not applicable for the arguments (Date)

at Date.main(Date.java:23)
というエラーが帰ってきてしまいます。
どこがおかしいのか教えてください。
http://java.sun.com/j2se/1.4/ja/docs/ja/api/
には
public final void setTime(Date date)
というのが載ってるんですがねぇ。

------------------------------------------------
import java.util.*;

public class Date {

public static void main(String[] args) {
// create a GregorianCalendar with the Japan time zone
// and the current date and time
Calendar calendar = new GregorianCalendar(Locale.JAPAN);
Date trialTime = new Date();
calendar.setTime(trialTime);

// print out a bunch of interesting things
System.out.print(calendar.get(Calendar.YEAR) + "年");
System.out.print((1 + calendar.get(Calendar.MONTH)) + "月");
System.out.println(calendar.get(Calendar.DATE) + "日");
System.out.println("曜日: " + calendar.get(Calendar.DAY_OF_WEEK));
System.out.println("AM_PM: " + calendar.get(Calendar.AM_PM));
System.out.print(calendar.get(Calendar.HOUR) + ":");
System.out.print(calendar.get(Calendar.MINUTE) + ":");
System.out.println(calendar.get(Calendar.SECOND));
}
}

以下のプログラムをコンパイルしようとすると
java.lang.Error: Unresolved compilation problem:
The method setTime(java.util.Date) in the type Calendar is not applicable for the arguments (Date)

at Date.main(Date.java:23)
というエラーが帰ってきてしまいます。
どこがおかしいのか教えてください。
http://java.sun.com/j2se/1.4/ja/docs/ja/api/
には
public final void setTime(Date date)
というのが載ってるんですがねぇ。

------------------------------------------------
im...続きを読む

Aベストアンサー

> public class Date {
こんな紛らわしい名前を付けるのがよくないんですね。
> Date trialTime = new Date();
とした時に、java.util.Date のつもりで書いていても、
コンパイラは上記の自前のDateだと思ってしまいます。
java.util.Date trialTime = new java.util.Date();
と書く手もあるにはありますが。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング