- ベストアンサー
access での BETWEEN
access2000 のテーブルから、SQL BETWEEN の処理が、うまく行きません・・。 環境 win2k VM 1.4.1_03-b02 テーブルは、 id 具具 1 3 2 9 3 12 4 5 5 8 なカンジです。 コードは、 String betWeen = "SELECT 具具 FROM goo WHERE 具具 BETWEEN 6 AND 13"; ResultSet rs = stm.executeQuery( betWeen ); エラー内容は、 java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] 抽出条件でデータ型が一致しません。 です。 SQLは、あってると思うのですが、何か方言的なことなのでしょうか・・? 回答、宜しくお願います・・。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
関連するQ&A
- Accessで日本語を使っていると実行時にエラーになる。
Microsoft Accessでデータベースを作成した。そのデータベースを使って、JdbcOdbcDriverでMicrosoft Accessから 値を取得しようとするとテーブル名とフィールド名に日本語を使っているときに以下の部分でエラーになります。 テーブル名とフィールド名には日本語を使いたいのですがどのようにすればよいでしょうか? String sql = "SELECT * FROM 整理" ResultSet rs = stmt.executeQuery(sql); while(rs.next()){ int no = rs.getInt("番号"); } テーブル名とフィールド名を英語にしたらエラーは消えました。
- 締切済み
- Java
- JDBC-ODBC-MDB(日本語テーブル・カラム名)アクセスで、ODBC -1305エラー
日本語のテーブル名・カラム名を使用したAccess(2000) mdb に JSPおよびServletからJDBC(ODBC経由)でアクセスすると、 SQL実行[executeQuery()]時に下記のエラーが発生します。 getMessage(): [Microsoft][ODBC Microsoft Access Driver] getErrorCode(): -1305 getSQLState(): S0002 ただし、 1.Javaアプリケーションから直接JDBC(ODBC経由)でアクセスすると正常に動作します(ResultSet取得)。 2.JSP・サーブレットからのアクセスでも、 2-1.テーブル名・カラム名がascii文字のテーブルの場合 2-2.テーブル名・カラム名が日本語でも、SQLで使わない場合 例:SELECT now() の場合は、 正常に動作します(ResultSet取得)。 JSP Servletは contentType="text/html; charset=Windows-31J" pageEncoding="windows-31j" で、保存形式は 日本語Shift_JISです。 出力画面表示に文字化けはありません。 作業環境はノートPC1台で、 Tomcat: 5.5.27 JDK/JRE : 1.6.0_07 Eclipse: 3.4.2 OS:Vista Ultimate SP1 ODBCデータソース:システムDNS Microsoft Access Driver(*.mdb) 6.00.6001.18000 ODBCJT32.DLL です。 諸兄のお知恵を拝借お願いします。 ※エラーコードの内容は? ※どのあたりを調べればよいか? ========================= Servletの場合のStackTraceなど -- getMessage:[Microsoft][ODBC Microsoft Access Driver] getErrorCode:-1305 getSQLState:S0002 java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6958) at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7115) at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3111) at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:338) at sun.jdbc.odbc.JdbcOdbcStatement.executeQuery(JdbcOdbcStatement.java:253) ========================= JSPの場合のStackTraceなど -- getMessage:[Microsoft][ODBC Microsoft Access Driver] getErrorCode:-1305 getSQLState:S0002 java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6958) at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7115) at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3111) at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:338) at sun.jdbc.odbc.JdbcOdbcStatement.executeQuery(JdbcOdbcStatement.java:253) at org.apache.jsp.TestODBC_jsp._jspService(TestODBC_jsp.java:95) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98) at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
- 締切済み
- Java
- JDBC:ODBCでaccess db にデータをInsertするとき、構文エラーがでました
insert into InMoneys(Source,Money) values('1',99) java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] INSERT INTO ステートメントの構文エラーです。
- ベストアンサー
- Java
- jspでのSQLエラーについて
MicorsoftAccessをデータベースに使い、 jspを書いたのですが、「java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] パラメータが少なすぎます。1 を指定してください」というエラーが出ました。どこに何をどう書き足せば良いのでしょうか? 教えてください。よろしくお願いします!
- ベストアンサー
- その他(データベース)
- SQLサーバーのテーブルに対してアクセスで更新クエリを行ないたい
こんばんは。 ・vista ・アクセス2003 ・SQL Server 2005 です。 SQL ServerからテーブルをMDBへリンクしているのですが そのテーブルに対し、アクセス側で更新クエリを実行しようとすると 実行時エラー '3157': ODBC--リンク テーブル'テーブル名'での更新に失敗しました。 [Microsoft][ODBC SQL Server Driver]時間切れになりました。(#0) と言うエラーになり、更新クエリができません。 どうすればアクセスでSQLサーバーのテーブルに対して更新クエリを行えるのでしょうか? よろしくお願いします。
- ベストアンサー
- その他(データベース)
- NetBeansではAccessのファイルから取得したデータを出力欄に表示できないのですか?
開発環境にNetBeansを使っています。以下のプログラムを実行したときに出力欄に実行成功と表示されますが、データの値が表示されません。 コマンドプロンプトからの実行結果ではデータの値を表示しました。 どのようにすれば表示するのでしょうか? import java.sql.*; public class Main { static final String str = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=hello.mdb"; static final String sql = "SELECT * FROM ハローテーブル"; public static void main(String[] args) { try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection con = DriverManager.getConnection(str, "", ""); Statement stmt = con.createStatement(); System.out.println(sql); ResultSet rs = stmt.executeQuery(sql); while(rs.next()){ int no = rs.getInt("No"); String lang = rs.getString("言語"); String msg = rs.getString("メッセージ"); System.out.println(no + " " + lang + " " + msg); } stmt.close(); con.close(); }catch(Exception e){ e.getStackTrace(); } } }
- ベストアンサー
- Java
- JavaでOracle9iのデータベースにアクセスしたいのですが
JavaでOracleのデータベース上のテーブルにアクセスして、 ウェブブラウザで表示したいのですが、 参考として以下の文を入手はしたのですが、 それぞれの文の意味がよく分かりません。 import java.sql.*; public class JDBCExample { public static void main(String args[]) throws SQLException { DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()); Connection conn= DriverManager.getConnection("jdbc:oracle:thin:@dlsun137:5521:sol1", "scott", "tiger"); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("select ename, empno, sal from emp"); while(rs.next()){ String name= rs.getString(1); int number = rs.getInt(2); double salary = rs.getDouble(3); System.out.println(name+" "+number+" "+salary); } rs.close(); conn.close(); } } 見た感じ、テーブルそのものを表示する記述ではないような気がするのと、 仮にこのクラスを作ったとして、このクラスだけで望んだ結果を得られるのでしょうか? どなたか、よろしくお願いいたします!
- ベストアンサー
- Java
- テーブル名が日本語だとクエリーを実行して結果を取得したときにエラーになる。
import java.sql.*; import java.io.*; public class Main { public static void main(String[] args) { try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); String cString = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=c:/hello.mdb"; Connection con = DriverManager.getConnection(cString, "", ""); Statement stmt = con.createStatement(); final String shiftJIS = "Shift_JIS"; String sql = encode("SELECT * FROM ハローテーブル",shiftJIS); ResultSet rs = stmt.executeQuery(sql); while(rs.next()){ int no = rs.getInt("No"); String lang = rs.getString("言語"); String msg = rs.getString("メッセージ"); System.out.println(no + " " + lang + " " + msg); } stmt.close(); con.close(); } catch (Exception e) { e.printStackTrace(); } } static String encode (final String sql, final String charset) throws UnsupportedEncodingException { return sql != null ? new String(sql.getBytes(), charset) : null; } } 上記のプログラムで以下の結果を出力したいです。 1 日本語 こんにちは世界 2 英語 Hello Word しかし、以下のエラーが表示されます。 java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] ??̓e?[?u???܂??̓N?G?? '繝上Ο繝シ' ????????܂???ł????B???̃e?[?u????N?G???????݂??Ă??邱?ƁA?܂??͖??O???????????Ƃ??m?F???Ă????????B at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6957) at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7114) at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3110) at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:338) at sun.jdbc.odbc.JdbcOdbcStatement.executeQuery(JdbcOdbcStatement.java:253) at javaapplication1.Main.main(Main.java:34) 文字コードの変換がうまくいかないのだと思いますがどうすれば良いかわかりません。 どのようにしたら解決するでしょうか? またおそらくクエリーを実行して結果の取得の部分以外にも データが日本語なので値の取得の部分で希望の結果にならないと思います。 どのようにすれば良いでしょうか?
- ベストアンサー
- Java
- WebSphere/DB2/ResultSet close/Exception
WebSphereを使って、Listenerで取得したデータソースを利用していますが、 String sql1 = "SELECT A1 FROM TEST1"; String sql2 = "SELECT B2 FROM TEST2 WHERE B1 = ?"; Connection conn = datasource.getConnection(); PreparedStatement ps1 = conn.preparedStatement(sql1); ResultSet rs1 = ps1.executeQuery(); while(rs1.next()){ PreparedStatement ps2 = conn.preparedStatement(sql2); ps2.setString(1,rs1.getString("A1")); ResultSet rs2 = ps2.executeQuery(); ps2.close(); } このロジックで、ps2をクローズすると、ps1で取得したResultSet rs1がクローズされるというExceptionが発生してしまいます。 (ループして戻ったときにrs1.next()でexceptionが起こる) なにか対処方法があるかご存知の方いらっしゃいましたら、よろしくお願いいたします。
- ベストアンサー
- Java
- getStringの値がNULLの時の処理
DB:SQL Server 2005 JDBCを使ってデータベースへアクセスし、SQL発行して結果をResultsetに格納、getStringで各項目の値を取得するところまでは確認できています。 外部結合したテーブルを参照していおり、getString()でnullを取得した場合にjava.lang.NullPointerExceptionが返ってエラーとなってしまいます。 回避策はあるのでしょうか? 抜粋したソースを下記に記します。 -- test.jsp -- <% ResultSet rs = db.executeQuery(sql); while(rs.next()){ String disp_object = rs.getString("object"); if(disp_object == null) disp_object="---"; } %> <tr>Object</tr> <tr><%=disp_object%></tr>
- ベストアンサー
- Java
- インクカートリッジがありませんの表示が出たので新しいカートリッジ交換しても解決しない。
- Windows10で無線LANに接続されている環境で、バッハローというWi-Fiルーターを使用しています。
- 光回線を使用しています。
補足
分かりやすく、的確な回答ありがとうございます。 arakororin さんが、よければ、もう2つ聞かせてください。 1.具具がテキスト型ならば、 12 13* 3 5 6* 8 9 と示してくれました動きを文にすると、 「最初に13より小さい値で、かつ13に近い値を探す。 6より大きい値を探す。」 ですよね・・? 数値型にすると、どういう探し方をするのか知りたいです。 2.数値型にすると、 9 12 8 と言う順番で結果が出ました。 この値の順番が、どのような動きをして出力されたか知りたいです・・。 java なら、API や eclipse のデバッグなど参考に動きを調べたり出来ると思うのですが、データベースの動きを見るには、どのような見方をしたら良いのでしょうか・・? 追加の質問になってしまいましたが、教えてもらうと幸いです・・。