2017-03-27 12 views
-1

PostgreSQLのトップテーブルにアイテムを挿入するには?それは可能ですか?テーブルにはテキストとして2つのフィールドしかありません。最初は主キーです。トップテーブルにアイテムを挿入する方法

CREATE TABLE news_table (
    title text not null primary key, 
    url text not null  
); 

私はJavaでプログラムの簡単なクエリが必要です。

OK、これは私のコードです:

get("/getnews", (request, response) -> { 
    List<News> getNews = newsService.getNews(); 
    List<News> getAllNews = newsService.getAllNews(); 
    try (Connection connection = DB.sql2o.open()) { 
     String sql = "INSERT INTO news_table(title, url) VALUES (:title, :url)"; 
     for (News news : getNews) { 
      if (!getAllNews.contains(news)) { 
       connection.createQuery(sql, true) 
         .addParameter("title", news.getTitle()) 
         .addParameter("url", news.getUrl()) 
         .executeUpdate() 
         .getKey(); 
      } 

     } 
    } 
    return newsService.getNews(); 
}, json()); 

問題は、それが二度目のgetnewsメソッドを呼び出すと、この新しいニュースはテーブルの最後に追加することになり、何も現存hronologiのニュースはありません。この解決方法私はSql2o + sparkjavaを使用します。

おそらく既に私は知っています。オブジェクトのgetnewsとgetallnewsが必要になる前にList getnewsを逆にする必要がありますか?

+0

新しいテーブル(タイトル、URL)の値に挿入する( 'タイトル'、 'URL'); ' –

+6

「テーブルの先頭」というものはありません –

+0

Javaでデータベースを使用する方法、あなたが正しいです –

答えて

3

テーブルに開始または終了がありません。データをソートする場合は、SELECT文でORDER BYを使用します。 ORDER BYがなければ、順序はありません。

+0

[JDBCチュートリアル](http://docs.oracle.com/javase/tutorial/jdbc/basics/index.html)を参照してください。私はテストを行うでしょう – kamiszczu

1

リレーショナル理論、リレーショナルデータベースの数学的基礎は、(表と実際のデータベースで表される)の関係が従わなければならない一定の条件を定めています。それらの一つは、それらが順序付け(即ち、これらは数学的な集合として扱われるので、行は、特定の順序で格納されていることも、検索されどちらも)を有していないということです。したがって、新しい行がテーブルに入力されるRDBMSの制御下にあります。

したがって、あなたは、データを取得するときORDER BY句を使用せずに、データの特定の順序を保証する方法はありません。

関連する問題