亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將數據插入表sqlite java

將數據插入表sqlite java

呼喚遠方 2022-06-23 16:59:27
我無法將數據插入到我的 sqlite 表中。我想將變量插入列而不是固定數據Fixed data:"INSERT INTO DATOS (ID,NOMBRE,GRUPO,TUTOR) " +                "VALUES (1, 'Paul', 32, 'California');";That i want:"INSERT INTO DATOS (ID,NOMBRE,GRUPO,TUTOR) " +                "VALUES (variableID, variableName, variableNumber, variableCity);";我一直在閱讀文檔,但我無法將其弄出來,請您幫幫我。目前我設法創建數據庫并手動插入數據:package com.proyecto.demo;import java.sql.*;public class SQLiteJDBC {public static void main( String args[] ) {  Connection c = null;  Statement stmt = null;  try { // Create the table     Class.forName("org.sqlite.JDBC");     c = DriverManager.getConnection("jdbc:sqlite:test.db");     System.out.println("Paso 1: Base de datos creada");     stmt = c.createStatement();     String sql = "CREATE TABLE DATOS " +                    "(ID INT PRIMARY KEY     NOT NULL," +                    " NOMBRE           TEXT    NOT NULL, " +                     " GRUPO            TEXT     NOT NULL, " +                     " TUTOR        INT)";      stmt.executeUpdate(sql);     stmt.close();     c.close();  } catch ( Exception e ) {     System.err.println( e.getClass().getName() + ": " +  e.getMessage() );     System.exit(0);  }  try { // Insert date to the table (here is where i have problems)    System.out.println("Paso 2: Conectar Base de datos");     Class.forName("org.sqlite.JDBC");     c = DriverManager.getConnection("jdbc:sqlite:test.db");     c.setAutoCommit(false);     System.out.println("Opened database successfully");     stmt = c.createStatement();     String sql = "INSERT INTO DATOS (ID,NOMBRE,GRUPO,TUTOR) " +                    "VALUES (1, 'Paul', 32, 'California');";      stmt.executeUpdate(sql);     stmt.close();     c.commit();     c.close();  } catch ( Exception e ) {     System.err.println( e.getClass().getName() + ": " + e.getMessage() );     System.exit(0);  }  System.out.println("All inserted!"); }}PD:一位用戶建議我使用 SQL 腳本來執行我的任務,但另一位用戶告訴我使用“preparedstatement”。哪個更好?
查看完整描述

1 回答

?
慕婉清6462132

TA貢獻1804條經驗 獲得超2個贊

您必須使用PreparedStatement。此外,強烈建議在 Java-8 之后將數據庫連接視為AutoClosables。您可以閱讀try-with-resources 聲明以了解如何執行此操作。最后,不要使用Exception類來捕獲異常。捕獲大多數情況下您會遇到的那種異常,在您的情況下是SQLException.


以下是上述內容的完整示例:


import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.SQLException;

import java.sql.Statement;


public class SQLiteSample {

    private static final String URL = "jdbc:sqlite:data.db";


    public static void main(String[] args) {

        createDb();

        createTable();

        insertPerson("Thomas", 15);

        insertPerson("Walter", 32);

    }


    private static void insertPerson(String name, int age) {

        final String SQL = "INSERT INTO persons VALUES(?,?)";

        try (Connection con = getConnection(); PreparedStatement ps = con.prepareStatement(SQL);) {

            ps.setString(1, name); // First question mark will be replaced by name variable - String;

            ps.setInt(2, age); // Second question mark will be replaced by name variable - Integer;

            ps.executeUpdate();

        } catch (SQLException e) {

            e.printStackTrace();

        }

    }


    private static void createTable() {

        final String SQL = "CREATE TABLE IF NOT EXISTS persons (name TEXT, age INTEGER);";

        // This SQL Query is not "dynamic". Columns are static, so no need to use

        // PreparedStatement.

        try (Connection con = getConnection(); Statement statement = con.createStatement();) {

            statement.executeUpdate(SQL);

        } catch (SQLException e) {

            e.printStackTrace();

        }

    }


    private static void createDb() {

        try (Connection conn = getConnection()) {

            if (conn != null) {

                conn.getMetaData();

            }

        } catch (SQLException e) {

            e.printStackTrace();

        }

    }


    public static Connection getConnection() throws SQLException {

        return DriverManager.getConnection(URL);

    }

}


查看完整回答
反對 回復 2022-06-23
  • 1 回答
  • 0 關注
  • 113 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號