所以我的问题是在数据库中插入新记录后,我想做一个应包含该新记录的SELECT查询。但是,返回的数据会排除新添加的记录。似乎每当我第一次打开连接时,数据库中已有的东西都是我的程序发生的。我希望这是有道理的。所有的意见都表示赞赏。
更新
所以这是INSERT片段
String DML = "INSERT INTO MEMBERS (FIRST_NAME, LAST_NAME, BIRTHDATE, DEATH_DATE, MARITAL_STATUS,"
+ " WEDDING_DATE, SPOUSE_NAME, MILITARY_SERVICE, DATE_JOINED, DEPARTURE_DATE, ACCEPTANCE_MODE, DEPARTURE_MODE,"
+ " RELATED_TO, NOTES) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
PreparedStatement pstmt = conn.prepareStatement(DML);
pstmt.setString(1, jTextField2.getText());
pstmt.setString(2, jTextField1.getText());
pstmt.setString(3, jTextField6.getText());
pstmt.setString(4, jTextField11.getText());
pstmt.setString(5, jTextField3.getText());
pstmt.setString(6, jTextField5.getText());
pstmt.setString(7, jTextField4.getText());
pstmt.setString(8, jTextField8.getText());
pstmt.setString(9, jTextField7.getText());
pstmt.setString(10, jTextField10.getText());
pstmt.setString(11, jTextField9.getText());
pstmt.setString(12, jTextField13.getText());
pstmt.setString(13, jTextField14.getText());
pstmt.setString(14, jTextArea1.getText());
pstmt.executeUpdate();
if (conn.getAutoCommit() == false)
conn.commit();
现在这是SELECT片段,如果在INSERT之后触发
pstmt=conn.prepareStatement("SELECT CONCAT(LAST_NAME, ', ', FIRST_NAME) AS NAME FROM MEMBERS ORDER BY LAST_NAME, FIRST_NAME");
rs=pstmt.executeQuery();
答案 0 :(得分:1)
您很可能已禁用<VirtualHost *:80>
ServerAdmin myemail
DocumentRoot /var/www/html/example.com
ServerName example.com
ServerAlias www.example.com
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
模式和/或您正在运行2个查询(autocommit
然后INSERT
)作为 交易 强>
尝试启用{/ 1}模式 ,然后再次运行2个查询(SELECT
然后autocommit
),它应该可以正常工作。
答案 1 :(得分:0)
如果你的意思是
stmt.executeUpdate("insert into t1 ...");
ResultSet rs = stmt.executeQuery("select ... from t1");
然后在语句2中插入的数据始终在语句2中可见,两者都在自动提交开启和关闭模式下。
如果您在一个事务中插入,不提交,并在另一个事务中读取,那么select可能不会看到插入的记录
答案 2 :(得分:0)
这样的事情可以做到:
您可以使用autoincrement
列,称之为 serialID
正常插入数据。检索时使用MAX(serialID)
SELECT CONCAT(LAST_NAME, ', ', FIRST_NAME) AS NAME FROM MEMBERS ORDER BY
LAST_NAME, FIRST_NAME where serialID = (select max(serialID) from MEMBERS);
您必须在一次交易中执行此操作。