簡體   English   中英

使用java將數據插入mySQL表

[英]Insert data into mySQL table with java

我在mySQL數據庫中有一個預定義的表: 在此輸入圖像描述

我正在努力將從用戶輸入的數據保存到數據庫,但我似乎無法保存在數據庫中的任何數據。 使用以下代碼,我試圖更新數據庫的第一行(ID:1到OTHER 2:0)。 我究竟做錯了什么?

private java.sql.Connection con = null;
private PreparedStatement pst = null;
private ResultSet rs = null;
private String url = "jdbc:mysql://localhost:8889/deliveryEarn";
private String user = "root";
private String password = "root";

try {
     con = DriverManager.getConnection(url, user, password);
     Statement st = (Statement) con.createStatement(); 

     st.executeUpdate("INSERT INTO incomeCalc " + "VALUES (3, 75, 6, 25, 18.50)");

     con.close();
}

catch (SQLException ex) {
     Logger lgr = Logger.getLogger(deliveryMain.class.getName());
     lgr.log(Level.SEVERE, ex.getMessage(), ex);

 } 

我認為它不起作用,因為值的數量小於表中的列數。 您需要做的是指定列的名稱以匹配您的值的數量。

INSERT INTO incomeCalc VALUES (3, 75, 6, 25, 18.50)  // error
// the only way this will work is when you have only 5 columns in 
// your table but in your case you have 7 that is why it will not work

它應該是

INSERT INTO incomeCalc(specify columns here to the values bound to)
VALUES (3, 75, 6, 25, 18.50)

w3School :(插入)

可以用兩種形式編寫INSERT INTO語句。

第一個表單不指定要插入數據的列名,只指定其值:

INSERT INTO table_name
VALUES (value1, value2, value3,...)

第二種形式指定列名和要插入的值:

INSERT INTO table_name (column1, column2, column3,...)
VALUES (value1, value2, value3,...)

你的插入語句應該是:

"INSERT INTO incomeCalc(ID, TIPS, HOURS, GAS, HOURLY_EARNINGS) " +
"VALUES (3, 75, 6, 25, 18.50)"

換句話說,您的語句缺少列名。

您需要指定列名稱,例如:

"INSERT INTO incomeCalc (ID, TIPS, HOURS, GAS, HOURLY_EARNINGS) VALUES (3, 75, 6, 25, 18.50)"

A。 按照在MYSQL DB中定義的順序傳遞表的所有列的值。 在這里,我們可以在您的表中看到7列,您只提供5個值...

要么

B。 利用這種語法

INSERT INTO TABLE_NAME (COLUMN_NAMES_SEPARATED_BY_COMMA) VALUES (VALUES_SEPARATED_BY_COMMA)

像munyengm你在rcase中的陳述是:“INSERT INTO incomeCalc(ID,TIPS,HOURS,GAS,HOURLY_EARNINGS)”+“VALUES(3,75,6,25,18.50)”

但你可能會循環值和東西,所以我建議使用預備語句,這樣可以防止sql注入。

ps = "INSERT INTO incomeCalc(ID, TIPS, HOURS, GAS, HOURLY_EARNINGS) VALUES (?, ?, ?, ?, ?)"

然后

        ps.setInt(index++, id); //id=3
        ps.setInt(index++, tips); //tips=75
        ps.setInt(index++, hours);//hour=6
        ps.setInt(index++, gas);//gas=25
        ps.setFloat(index++, HOURLY_EARNINGS);

First READONLY = false;

有一些限制。你需要在COLUMN_NAMES之前和之后放置[Name_table$]\\ 像這樣:

st.executeUpdate("INSERT INTO [IncomeCalc$] (\"ID\", \"TIPS\", \"HOURS\", \"GAS\",\"HOURLY_EARNINGS\") VALUES ('2012-10-25 01:00:00','16.3')");

這種格式對我有用,就像你看到的那樣,沒有額外的逗號,斜線或其他任何東西是必要的:

statement.executeUpdate("INSERT INTO incomeCalc (value1, value2, value99) VALUES (3, 75, 6)");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM