Nasıl BULUNMAKTAYDI Ekle ID almak?
1* *bir veritabanı SQL Server benim durumumda Microsoft olan) bir kayıt Java OLANLARI kullanarak yapmak istiyorum. Aynı zamanda, ınsert KİMLİĞİ almak istiyorum. Nasıl bu OLANLARI API kullanarak elde edebilirsiniz?
CEVAP
Otomatik olarak oluşturulan bir anahtar varsa, o zaman bu Statement#getGeneratedKeys()
kullanabilirsiniz. Aynı kişi INSERT
için kullanılan gibi Statement
gereken tek şey, söylemen. İlk ifadesi Statement.RETURN_GENERATED_KEYS
anahtarları getirmek için gerekli OLANLARI sürücüsü bildirmek kullanarak oluşturmanız gerekir. Burada temel bir örnek:
public void create(User user) throws SQLException {
try (
Connection connection = dataSource.getConnection();
PreparedStatement statement = connection.prepareStatement(SQL_INSERT,
Statement.RETURN_GENERATED_KEYS);
) {
statement.setString(1, user.getName());
statement.setString(2, user.getPassword());
statement.setString(3, user.getEmail());
// ...
int affectedRows = statement.executeUpdate();
if (affectedRows == 0) {
throw new SQLException("Creating user failed, no rows affected.");
}
try (ResultSet generatedKeys = statement.getGeneratedKeys()) {
if (generatedKeys.next()) {
user.setId(generatedKeys.getLong(1));
}
else {
throw new SQLException("Creating user failed, no ID obtained.");
}
}
}
}
Çalışıp çalışmadığını OLANLARI (sürücü bağımlı olduğunu unutmayın. Şu anda en son sürüm en yapacak, ama eğer yanılmıyorsam, Oracle JDBC sürücüsü hala bu biraz zahmetli. MySQL ve DB2 zaten yıllardır destekledi. PostgreSQL desteği için kısa önce başladı. Hiç kullanmadım gibi MSSQL hakkında hiçbir ifade.
Oracle, çağırabilirsiniz CallableStatement
RETURNING
fıkra SELECT CURRVAL(sequencename)
(ya da her neyse DB özgü sözdizimi için bunu yapmak) doğrudan sonra INSERT
aynı işlem elde etmek için son oluşturulan anahtar. Ayrıca Bkz: 13**.
nasıl son Ekle codeıgniter active reco...
Nasıl JavaScript bir zaman damgası alm...
Nasıl Python ile şimdiki zaman almak i...
Nasıl bir liste boyutunu almak için...
Nasıl Gıt mevcut şube adı almak için?...