[英]Inserting into database with auto increment
我需要使用准備好的語句將一些值存儲到表中。
我的表中有一列叫id,它設置為自動遞增。 我不需要用戶為此列提供任何輸入。
其他值都是從用戶那里獲得的。
編輯:有2個ID。 一種來自用戶,另一種由數據庫自動生成。 數據庫自動生成的一個是主鍵。
我這樣做對嗎?
謝謝。
准備的聲明:
DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `insert_details`(IN id varchar(45),IN username varchar(45),IN name varchar(45))
BEGIN insert into details (id,username,name) values (id ,username,name);
END
碼:
PreparedStatement preparedStatement = connect.prepareStatement("CALL INSERT_DETAILS(?,?,?)");
preparedStatement.setLong(1, userID);
preparedStatement.setString(2, username);
preparedStatement.setString(3, name);
preparedStatement .executeUpdate();
您只需在准備好的語句中省略自動生成的字段,因為MySQL會為您設置該值。 在您的示例中,您的參數名稱與表屬性名稱沖突。 我遵循的約定是在參數名稱前添加p_
或類似名稱修飾。
准備好的語句應類似於以下內容:
DELIMITER $$
CREATE
DEFINER=`root`@`localhost`
PROCEDURE `insert_details`(
IN p_user_id VARCHAR(45),
IN p_username VARCHAR(45),
IN p_name VARCHAR(45))
BEGIN
INSERT
INTO details(id, username, name)
VALUES (p_user_id, p_username, p_name);
END $$
從准備好的語句中刪除id
字段。
因為它將與字段數據沖突,所以可能會發生問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.