mssql etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
mssql etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

29 Haziran 2015 Pazartesi

Hibernate ile CRUD işlemleri

Merhaba,
bu yazımda sizlere hibernate ile veritabanı üzerinde  CRUD(kayıt oluşturma ,silme , güncelleme , listeleme) nasıl yapıldığını göstereceğim.

Aşağıda dikkat etmeniz gereken noktaların açıklamalarını yazacağım ve yazının sonunda da projenin kaynak kodlarını yine sizlerle paylaşıyor olacağım.

1 -) java application projesi oluşturun. Dizin yapısının alışılagelmiş biçimde olması için ben spring application projesi oluşturdum. Normalde bu yazının spring ile bir bağlantısı yoktur.

proje yapısı aşağıdaki gibi olacaktır:




2 -) Pom.xml 'e hibernate ve mysql bağımlılığını tanımlayın. Ayrıca hibernate in bağımlılıklarından biri de log4j dir.

 <!--MySQL database driver-->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.9</version>
</dependency>



 <!--Hibernate -->
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>3.6.3.Final</version>
</dependency>

<dependency>
    <groupId>javassist</groupId>
    <artifactId>javassist</artifactId>
    <version>3.12.1.GA</version>
</dependency>


 <!-- slf4j-log4j -->
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.6.1</version>
</dependency>



3 -) hibernate.cfg.xml ile hibernate erişim ayarlarını yapın. Hangi veri tabanına bağlanacağını , hangi entity ile işlem yapacağını , kullanıcı adını , şifresini ve veri tabanı türünü belirtin.

<hibernate-configuration>
    <session-factory>
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost/test_spring</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.connection.password">12345678</property>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
        <property name="show_sql">true</property>
        <mapping class="com.company.entities.Person" ></mapping>
    </session-factory>
</hibernate-configuration> 






4 -)  HibernateUtil.java dosyasında bir static session oluşturalım. Hibernate bilgileri session üzerinde güncelleyerek veri tabanıyla eşleştirir.



 public class HibernateUtil {

    private static final SessionFactory SESSION_FACTORY  = new Configuration().configure().buildSessionFactory();


    public static SessionFactory getSession(){
        return SESSION_FACTORY;
    }

    public static void closeSession(){
        getSession().close();
    }

}


5 -)  Create(oluşturma) İşlemi

         Session session = HibernateUtil.getSession().openSession();

//        CREATE
        session.beginTransaction();
        Person person = new Person();

        person.setCreatedate(new Date());
        person.setAge(33);
        person.setName("ali");
        person.setLastname("veli");

        session.save(person);
        session.getTransaction().commit();


SQL:
 CREATE TABLE `persons` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `lastname` varchar(255) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  `createdate` date NOT NULL,
  PRIMARY KEY (`id`)
)

Yazı kısa olsun diye daha fazla detaya girmiyorum. anlaşılmayan bir yer olursa çekinmeden sorabilirsiniz.

kaynak dosyalar(github) : indirmek için tıklayın

12 Nisan 2015 Pazar

Windows üzerinden PHP ile MS SQL Bağlantısı yapmak (Pdo)

Herkese merhaba,
daha önce sizlere Linux üzerinden PHP ile MsSQL bağlantısının nasıl yapılacağını anlatmıştım. Bu yazımda ise windows üzerinden PDO ile MsSQL bağlantısı yapmak ve sorgu çalıştırmayı anlatacağım.

Arkadaşlar ben windows ortamlarında geliştirme yapacağım zaman  genellikle  appserv(php+mysql+apache) paketini kullanıyorum. Sade ve basit olduğu için böyle bir tercih yaptım.  yazının devamı Appserv paketinin  dizin yapısına göre gidecek ancak Xampp,Wamp...vs  diğer paketleri kuranlarda yazının belli adımlarını  kendilerine göre uyarlayıp bu anlatımdan faydalanabilirler. 

Öncelikli olarak bilgisayarımıza  kurduğumuz PHP versiyonunu öğrenelim. Aşağıdaki komut PHP sayfasına yazıp sayfayı web browser üzerinden çağıralım.
<?php phpinfo();  ?> 

Yine bu komut sayesinde PHP_PDO nun varsayılan olarak desteklediği DB listesini görelim(bende sadece sqlite desteği aktif olarak ayarlı gelmiş). 


aşağıdaki linkten kullandığınız PHP nin versiyonuna uygun Dll leri indirin.
http://www.microsoft.com/en-us/download/details.aspx?id=20098 indirdiğiniz dosyayı çalıştırın ve içindeki DLL leri bir klasöre çıkarın.

Bu Dll klasöründen kendi PHP versiyonunuza uygun PDO dll lerini alın ve php extention dizinine kopyalayın. Benim makinemde extentions dizini c:\AppServ\Php5\Ext  olarak set edilmiştir. Siz bu kopyalama işlemini kendi ayarlarınıza göre yapmalısınız.


Daha sonra php.ini(varsayılan olarak c:\\windows altında olur) dosyasını açıp  php versiyonunuza uygun olarak kopyaladığınız Dll leri bu dosya üzerinden aktif edin.  aşağıdaki satırlar php 5.2 için  pdo sqlsrv yi aktif eder. 

php.ini
extension=php_pdo_sqlsrv_52_nts_vc6.dll
extension=php_pdo_sqlsrv_52_ts_vc6.dll

daha sonra servislere gidip(start+run+services.msc+enter)  ayarları baştan okuması için  apache2.2 servisini restart edin.

Yaptığınız aktivasyonları görmek için yine phpinfo() fonksiyonunu çağırın
<?php phpinfo();  ?> 

Alttaki ekran görüntüsünde olduğu gibi pdo_sqlsrv nin aktif edilmiş olduğunu göreceksiniz.  



Üsetteki aşamaları adım adım yaptığınızda Php ile mssql bağlantısı yapabilmektesiniz. Ancak öncesinde bilgisayarınıza sql server native client'ın kurulu olması gerekmektedir. C:\Windows\system32 nin altında sqlncli11.dll yoksa aşağıdaki bu dll'i bulup system32 dizinine ekleyin yada aşağıdaki adımları takip ederek wizard yardımıyla   sql server native client'ı bilgisayarınızda aktif edin.

Download : SQL Server Native Client

bu adresten indirdiğiniz exe dosyasını çalıştırıp next diyerek wizardı sonlandırın.



Pdo SQL server bağlantısı ve Select  cümlesi örneği
<?php
try {
    $hostname = "localhost";
    $port = 10060;
    $dbname = "my_database";
    $username = "username";
    $password = "password";

    $dbh = new PDO("sqlsrv:Server=192.168.1.7;Database=customerdb", "sa", "123456");

    $sql = "SELECT * FROM animals";
    foreach ($dbh->query($sql) as $row) {
        print $row['animal_type'] . ' - ' . $row['animal_name'] . '<br />';
    }
} catch (PDOException $e) {
    echo $e->getMessage();
}
?>
  

25 Temmuz 2014 Cuma

Linux üzerinden PHP ile MS SQL Bağlantısı yapmak

Merhaba, bu yazımda sizlere linux sunucu üzerinden PHP ile Microsft SQL Server database ine nasıl erişim yapılacağından bahsedeceğim.

Şöyle bir senaryo düşünelim;  Ubuntu server üzerinde PHP ile web projeleri geliştiriyorusunuz.

Uzak bir veri tabanından data çekmeye ihtiyaç duydunuz. Ve neyazıkki uzaktaki veri tabanı Microsoft SQL Server. Eğer bu veri tabanı PostgreSQL yada MySQL olsaydı PHP ile bu veri tabanına bağlantı yapmanız çok kolaydı.
Fakat ben araştırdım ki PHP ile ubuntu üzerinden MS SQL Server a bağlanmak ta enaz onlar kadar kolay.

Aslında Microsoft un PHP için SQL Server bağlantısı yapan driver ı var. Fakat tahmin edeceğiniz üzere Windows platformu üzerinde çalışan PHP geliştiriciler için. Yani siz linux üzerinde bu driver ı kullanarak SQL server'a bağlanamıyorsunuz.  Ancak SQL Server erşimi için  freetds adında  ücretsiz bir open source driver var. Linux veya türevi işletim sistemleri üzerinde geliştirme yapıyorsanız bu driver ı kullanabilirsiniz.


Tabi Öncelikle SQL Server sizin TCP/IP bağlantılarınızı kabul etmesi gerekir. Yani SQL Server sunucusuna  erişim yetkilerinizin olması gerekiyor.


Aşağıdaki komutları sırasıyla çalıştırarak freetds driveri ubuntu üzerinde kuralım:


FreeTDS ve PHP MS SQL uzantısı için
sudo apt-get install freetds-common freetds-bin unixodbc php5-sybase

Apache servisini restart et
sudo /etc/init.d/apache2 restart

FreeTDS ile bağlantı testi
tsql -H SunucuAdi-p 1433 -U kullaniciAdi -P Sifre -D veritabaniAdi

Eğer bağlanırsa çalışıyor demektir.


ÖRNEK PHP Bağlantısı:
$link = mssql_connect('yourserver', 'yourusername', 'yourpassword');

if (!$link)
    die('Unable to connect!');

if (!mssql_select_db('yourdatabasename', $link))
    die('Unable to select database!');

$result = mssql_query('SELECT * FROM yourtable');

while ($row = mssql_fetch_array($result)) {
    var_dump($row);
} 
mssql_free_result($result);



 NOT: Yazının bazı kısımları  ingilizce kaynaklardan türkçeleştirilmiştir.