SPRING JDBC ile SQL SERVER KULLANARAK VERİTABANI İŞLEMLERİ

1-)Kodumuzu geliştirmeye başlamadan sql server configuration managera gelerek tcp/ip ve tcpport ayarlarımızı kontrol ediyoruz.Ayarlarda bir değişiklik yaptık isek geçerli olması için sql serverın servisini stop start etmemiz gerekiyor.

springsql1springsql2

2-)Microsoft Sql servera maven central üstünden dependency olarak mssql-jdbcyi eklemek için pom.xmlemize aşağıdaki satırları ekliyoruz

<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>7.2.1.jre11</version>
</dependency>

3-)String connectionUrl =“jdbc:sqlserver://DESKTOP-myinstance\\SQLEXPRESS;databaseName=AddressBook;integratedSecurity=true;portNumber=1433″; integratedSecurity şeklinde bir bağlantı yapmak isterseniz aşağıdaki ayarları yapmamız gerekmektedir aksi takdirde driver konfigürasyonu yok hatası alırsınız

This driver is not configured for integrated authentication. ClientConnectionId:3070320f-113f-4ffc-a526-444abeba90a2

https://docs.microsoft.com/en-us/sql/connect/jdbc/download-microsoft-jdbc-driver-for-sql-server?view=sql-server-2017 sitesinden kullandığınız jreye göre driverı download edin indirdiğiniz zipin içindeki sqljdbc_auth.dll bu dlli uygulamanızın calıştıgı java pathindeki C:\java\jdk-11.0.2\bin jrenin bini içine kopyalayın(64 bit veya 32 bit olarak calısma mantığına göre ilgili dlli bin altına kopyalamanız gerekecektir.)

springsql3

4-)Eğer springboot kullanıyorsak applicationproperties tanımlarında default olarak belirteceksek aşağıdaki örnekteki gibi driverClassName ve urli ayrıca verebiliyoruz.

spring.datasource.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.datasource.url=jdbc:sqlserver://DESKTOP-myinstance\SQLEXPRESS;databaseName=AddressBook;integratedSecurity=true;portNumber=1433

 

5-)Temel olarak connectionı yarattıktan sonra ExecuteQuery diyerek sorgumuzu çalıştırıp dönen değeri bir resulsete alıyoruz.Aşağıdaki örnek java ile sadece jdbc kullanarak sqlservera bağlanıp sonuçları ceken örnek bir kod bloğudur.

 

public  static  void ConnectSqlServerWithPureJDBC()
{
String connectionUrl =“jdbc:sqlserver://DESKTOP-myinstance\\SQLEXPRESS;databaseName=AddressBook;integratedSecurity=true;portNumber=1433″;

try (Connection connection = DriverManager.getConnection(connectionUrl);) {
Statement stmt = connection.createStatement();
String SQL = “SELECT  * FROM PersonTable”;
ResultSet rs = stmt.executeQuery(SQL);

while (rs.next()) {
System.out.println(rs.getString(“Name”) + ” ” + rs.getString(“Surname”));
}
// Code here.
String a=“”;
}
// Handle any errors that may have occurred.
catch (SQLException e) {
e.printStackTrace();
}

}

springsql4

6-)Peki Spring JDBC nedir?Temel olarak jdbc kullanan ama üstüne bir katman daha eklenerek jdbcde kodla yapılan pek cok işlemi soyutlaştırarak bize daha az kod ile daha cok iş yapabileceğimiz ,ayrıca veritabanı işlemlerimizi daha kolay ve nesneye dayalı proglama şeklinde yapmamızı olanak sağlayan bir frameworktür

https://docs.spring.io/spring/docs/4.0.x/spring-framework-reference/html/jdbc.html

SpringJDBCnin bizim için temel olarka yapabildiği işlemler örneği

springsql5

7-)öncelikle pom.xmlimize spring-jdbc yide dependecy olarak ekleyelim

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>LATEST</version>
</dependency>

 

 

Select işlemlerimiz için JdbcTemplate bloğunu kullanabiliriz burada RowMapper mantığı yardımı ile işlemlerimizi nesneye dayalaı modelleme şeklinde getirebiliriz

 

public  static void ConnectandSelectSpringJDBC()
{
String connectionUrl =“jdbc:sqlserver://DESKTOP-myinstance\\SQLEXPRESS;databaseName=AddressBook;integratedSecurity=true;portNumber=1433″;
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName(“com.microsoft.sqlserver.jdbc.SQLServerDriver”);
dataSource.setUrl(connectionUrl);

JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
String query = “SELECT * FROM PersonTable WHERE ID = ?”;
Person person = jdbcTemplate.queryForObject(
query,new Object[] { 1 }, new PersonRowMapper());

System.out.println(person.getName());

}

springsql6

public class PersonRowMapper implements RowMapper<Person> {
@Override
public Person mapRow(ResultSet resultSet, int i) throws SQLException {
Person p = new Person();

p.setID(resultSet.getInt(“ID”));
p.setName(resultSet.getString(“Name”));
p.setSurname(resultSet.getString(“Surname”));

return p;
}
}

 

 

8-) SimpleJdbcInsert ile insert işlemlerizi kolayca yapabiliyoruz ,eğer ID alanı otomatik artan bir değer ise dönüş değerinide usingGeneratedKeyColumns(“ID”); işaretleyerek simpleJdbcInsert.executeAndReturnKey kolayca alabiliyoruz

 

public  static  void InsertSpringJDBC()
{
String connectionUrl =“jdbc:sqlserver://DESKTOP-myinstance\\SQLEXPRESS;databaseName=AddressBook;integratedSecurity=true;portNumber=1433″;
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName(“com.microsoft.sqlserver.jdbc.SQLServerDriver”);
dataSource.setUrl(connectionUrl);

SimpleJdbcInsert simpleJdbcInsert = new SimpleJdbcInsert(dataSource)
.withTableName(“PersonTable”)
.usingGeneratedKeyColumns(“ID”);

Map<String, Object> parameters = new HashMap<String, Object>();
// parameters.put(“ID”, 5);
parameters.put(“Name”, “Ali”);
parameters.put(“Surname”, “Güven”);

Number id = simpleJdbcInsert.executeAndReturnKey(parameters);
System.out.println(“Generated id – ” + id.longValue());

}

 

9-)SimpleJdbcCall ile de storedprocedure örneklerini springjdbc metolodojisinde kullanabiliyoruz

 

10-)update işlemleri için ise JdbcTemplatein update özelliğini kullanabiliriz

 

JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
jdbcTemplate.update(“update PersonTable set name = ? where ID = ?”,
new Object[] {“Ali Veli “, 1002});

11-)delete işlemleri için yine jdbctemplatein update fonksiyonelitisi kullanabiliyoruz

 

JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
jdbcTemplate.update(“delete PersonTable where ID = ?”,
1002);

 

12-) NamedParameterJdbcTemplate ile parametre isimlerinide belirleyerek daha kontrollü sorgularda oluşturabiliriz,dikkat edilmesi gereken nokta sorgu parametreleri : nokta ile belirtmektir.
String connectionUrl =“jdbc:sqlserver://DESKTOP-myinstance\\SQLEXPRESS;databaseName=AddressBook;integratedSecurity=true;portNumber=1433″;
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName(“com.microsoft.sqlserver.jdbc.SQLServerDriver”);
dataSource.setUrl(connectionUrl);

JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
// jdbcTemplate.update(“delete PersonTable where ID = ?”,1002);

NamedParameterJdbcTemplate namedTemplate=new NamedParameterJdbcTemplate(jdbcTemplate);
Map namedParameters = new HashMap();
namedParameters.put(“ID”, 1003);
namedTemplate.update(“delete PersonTable where ID = :ID”,namedParameters);

 

Bu yazı Genel kategorisine gönderilmiş. Kalıcı bağlantıyı yer imlerinize ekleyin.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Şu HTML etiketlerini ve özelliklerini kullanabilirsiniz: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>