0

MS Access 2007 を使用してデータを挿入しようとすると、例外が発生し、[] 中かっこを使用して試しましたが、機能しません。DBF ファイルは正常に作成されますが、正確な出力は生成されません。

           import java.sql.*;

           public class Test
           {
             public static void main(String[] args)
              {
               try 
                  {
                     Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

                     String dataSourceName = "mdbTEST";
                     String dbURL = "jdbc:odbc:" + dataSourceName;
                     Connection con = DriverManager.getConnection(dbURL, "",""); 

          //  creating a java.sql.Statement so I can run queries

                    Statement s = con.createStatement();
                    s.execute("create table TESTME ( olumn_name integer )");
        // creating a table

       // inserting some data into the table

                    s.execute("insert into TESTME values(3)");

       // selecting the data from the table
                    s.execute("[select column_name from TESTME]");

       //getting any ResultSet that came from our query 

                    ResultSet rs = s.getResultSet();  
                   if (rs != null) 
       // if rs == null, then there is no ResultSet to view

                 while ( rs.next() ) 
                        {
        /* the next line will get the first column in our current row's ResultSet 
        as a String ( getString( columnNumber) ) and output it to the screen */ 

             System.out.println("[Data from column_name:]" + rs.getString(1) );
                        }

             s.execute("drop table TESTME");
             s.close(); 
             con.close(); 
                  }
            catch (Exception err)
                      {
                        System.out.println("ERROR: " + err);
                      }
        }
      }
4

1 に答える 1

1

あなたの声明

s.execute("[select column_name from TESTME]");

Access SQL は角かっこを使用してテーブル名と列SELECTを区切るため、機能しません。そのため、SQL "クエリ" はキーワードのない単一の名前で構成されます。私が提案したい...

s.execute("SELECT [column_name] FROM [TESTME]");

CREATE TABLE...しかし、ステートメントのタイプミスのため、おそらく機能しません。これを試して:

s.execute("SELECT [olumn_name] FROM [TESTME]");

編集

次のコードは私にとってはうまくいきます:

import java.sql.*;

public class JDBCQuery {
    public static void main( String args[] )
    {
        try
        {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            Connection conn = DriverManager.getConnection("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:\\Users\\Public\\Database1.accdb;");
            Statement s = conn.createStatement();
            s.execute("CREATE TABLE [TESTME] ([column_name] integer)");
            s.execute("INSERT INTO [TESTME] VALUES (3)");
            s.execute("SELECT [column_name] FROM [TESTME]");
            ResultSet rs = s.getResultSet();
            if (rs!=null)
            {
                while (rs.next())
                {
                    System.out.println("Data from column_name: " + rs.getString(1));
                }
            }
            s.execute("DROP TABLE [TESTME]");
            s.close();
            conn.close();
        }
        catch( Exception e ) {
            e.printStackTrace();
        }
    }
}

Database1.accdb(このコードを実行したとき、データベース ファイルは既に存在していたことに注意してください。)

于 2013-04-24T10:55:51.130 に答える