Javaの道 Javaに関する
 ニュースJava基本Servlet・JSPオープンソースFAQ掲示板
Javaの道 >  掲示板 >  掲示板(DB接続で)
閲覧数:1798
掲示板(DB接続で)
名前
匿名
題名 DB接続で
質問内容

質問を評価する
(0ポイント)
初心者でJAVAを勉強し DB接続学習中です
新しいデータを追加したいのですが
NAME KANAのところが???になってしまいます
なぜか教えていただけると助かります

import java.sql.*;

    public class B_DB {
        public static void main(String[] args) { 

            
           

            String sqlStr; 

            try { 
                //ドライバクラスをロードする 
                Class.forName("org.gjt.mm.mysql.Driver"); 

                //MySQLに接続 
                Connection  con = DriverManager.getConnection("jdbc:mysql://localhost/****", "***", "****"); 

                //ステートメント生成 
                Statement stmt = con.createStatement(); 

              
                String mySql = "insert into TESTTABLE1 values('8', '奥田','オクダ')";
                
                //SQL実行
                int num = stmt.executeUpdate(mySql);
                System.out.println(num + "件のレコードを追加しました。");
 
                     
                //SQL文 
                sqlStr = "SELECT * FROM TESTTABLE1"; 

                //SQL文実行 
                
                ResultSet rs = stmt.executeQuery(sqlStr); 

                
               
                
                
                
                
                //検索結果数だけループ 
                while(rs.next()){ 
                    //レコードの値 
                    int id = rs.getInt("TESTNO"); 
                    String name = rs.getString("NAME"); 
                    String yomi = rs.getString("KANA");

                    //表示 
                    System.out.println(id + ":" + name+yomi); 
                } 

                //クローズ 
                rs.close(); 
                stmt.close(); 
                con.close(); 

            } catch (Exception ex) { 
               
                } 
               
            } 
        }

結果


1件のレコードを追加しました。
1:☆☆☆ホシホシホシ
2:山田ヤマダ
3:藤田フジタ
4:岡田オカダ
5:?????
6:?????
7:?????
8:?????

5〜8失敗中です
質問日時 2013-03-25 11:55:54
名前
匿名
回答内容

回答を評価する
(0ポイント)
8だけを追加してるように見えますが、その他のデータ
は誰が(何が)どうやって入力したものでしょうか?

8のデータ追加をプログラム埋め込みでやってるようで
すが、8のデータは毎回変えてるのでしょうか?

あとは、1〜4のデータと5〜8のデータを比較して何
がどう違うのか確認してはどうでしょうか?
実際のデータは何がはいっているのでしょうか?



回答日時 2013-03-25 15:40:33
名前
匿名
回答内容

回答を評価する
(0ポイント)
1〜4はコマンドプロンプトで 
INSERT INTO TESTTABLE1 VALUES (2,'山田','ヤマダ');
INSERT INTO TESTTABLE1 VALUES (3,'藤田','フジタ');
INSERT INTO TESTTABLE1 VALUES (4,'岡田','オカダ');
といった形で入力しました。

その後、イクリプスでDB接続クラスを作り
5〜データを入れようとすると ??と表示されます。
5〜のデータはTESTNO以外 内容は一緒です
回答日時 2013-03-25 16:30:49
名前
匿名
回答内容

回答を評価する
(0ポイント)
5〜のデータは同じとは、'奥田','オクダ'を入れようと
しているということ?
データを変えて実行とかはしていないのでしょうか?

コマンドプロンプトで、SELECT * FROM TESTTABLE1を実行
したらどう表示されるのでしょう?
回答日時 2013-03-25 18:20:45
名前
匿名
回答内容

回答を評価する
(0ポイント)
やってみました

mysql> SELECT*FROM TESTTABLE1;
+--------+------+------+
| TESTNO | NAME | KANA |
+--------+------+------+
|      0 | ??0  | ???0 |
|      1 | ??1  | ???1 |
|      2 | ??2  | ???2 |
|      3 | ??3  | ???3 |
|      4 | ??4  | ???4 |
|      5 | ??5  | ???5 |
|      6 | ??6  | ???6 |
|      7 | ??7  | ???7 |
|      8 | ??8  | ???8 |
|      9 | ??9  | ???9 |
+--------+------+------+


それで今の書き込んでいるソースは すこし変更して
for(int i = 0; i<10; i++){
        db.updateExec("insert into TESTTABLE1(TESTNO,NAME,KANA) values("+i+",'駒田" +i+ "', 'コマダ" +i+ "')");

という感じです
追加はできてるんで
文字化け?をしてるようです・・・・

回答日時 2013-03-25 18:46:09
名前
匿名
回答内容

回答を評価する
(10ポイント)
文字コード
回答日時 2013-03-25 19:09:00
名前
匿名
回答内容

回答を評価する
(30ポイント)
以下のワードでググってみると良いかも。
java mysql 日本語 文字コード
回答日時 2013-03-25 20:26:47
名前
匿名
回答内容

回答を評価する
(0ポイント)
質問者です

できました!!文字化けが原因だったとは・・・
ありがとうございます!
回答日時 2013-03-26 09:50:02
名前
匿名
回答内容

回答を評価する
(0ポイント)
予期しない??は、まず文字化けと思って間違いない。
回答日時 2013-03-26 21:19:29

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。



このページのトップへ
 ニュースJava基本Servlet・JSPオープンソースFAQ掲示板
Javaの道_CopyrightJavaの道