Picproje Elektronik Sitesi

PROGRAMLAMA DİLLERİ => Visual Basic => Konuyu başlatan: EMG81 - 14 Ocak 2011, 14:22:14

Başlık: Bir adet veri tabanını birden çok bilgisayarın kullanabilmesi?
Gönderen: EMG81 - 14 Ocak 2011, 14:22:14
2 veya daha fazla Bilgisayar ile Ağ üzerinden tek bir veri tanabanı(acsess) Kullanılamıyor mu ?

Dün Vb net ile bikaç denemeler yaptım. eskiden bunu Vb6 ile yapmıştım... Acsess 2003 kullanmıştım. Şimdi acsess 2007 ile vb Net te denemeler yaptım. Amacım sayısını kendimiz belirlediğimiz (atıyorum 4 ) bilgisayarlara yüklediğim programlarımın ağ üzerinden bir biri ile haberleşmesi...

Başlık: Ynt: Bir adet veri tabanını birden çok bilgisayarın kullanabilmesi?
Gönderen: iyildirim - 14 Ocak 2011, 14:46:47
Kullanabilirsin.
Ancak soruda bir tutarsızlık var gibi. Veritabanı paylaşılan bilgiyi depolamak için, bilgisayarların haberleşmesi ile ne kastediyorsun anlamadım.
Başlık: Ynt: Bir adet veri tabanını birden çok bilgisayarın kullanabilmesi?
Gönderen: EMG81 - 14 Ocak 2011, 15:17:12
Evet şimdi yazımı tekrar okudum. Biraz tutarsız olmuş, özür dilerim... Hemmen düzeltiyorum..

Haberleşmesinden kastım dosya gönderme, alma filan değil...

Basit bi buton ve text yaptım. evimde şuan 3 bilgisayar var ve 1 tanesinin içerisine veri tabanı attım. diğer 2 si ağ üzerinden aynı veri tabanını görüyorlar...

Amacım bilgisayarlar arasında String veri transferi yapmaktı. hangi bilgisayarın butonuna basılırsa ana makinada(veri tabanınınolduğu pc) ve diğer makinalardaki textbox lar da butona basılan pc nin adını göstermekti. (Her makinadaki buton database içinde kendi belirlediğim kutucuğa ismini kaydediyor)

Ama 1 den fazla kullancı olunca (ana makina harici) programlar database e kayıt yapamıyor...

Böyle birşey yapılabilirmi diye yola çıktım. Konu hakkında pek bilgim olmadığından database kullandım.
Ağdan string haberleşme için daha farklı bir yol varsa onuda deneyebilirim...
Başlık: Ynt: Bir adet veri tabanını birden çok bilgisayarın kullanabilmesi?
Gönderen: iyildirim - 14 Ocak 2011, 17:02:40
Veritabanını çok kullanıcılı çalıştırmak istiyorsanız veritabanının açarken exclusive açmamalısınız.  Ayrıca uygulamanızda tablo açarak çalışıyorsanız da tabloyu kilitleyerek de açmamalısınız. Bu konuda önereceğim direkt SQL cümleleri kullanmanız olacaktır. UPDATE ISIM_TABLOSU SET GUNCEL_MAKINA_ISMI ='MAKINA1' WHERE ........ gibi.
Yapmaya çalıştığınız işlem karmaşık değil bu şekilde kullanmak isterseniz çok da sorun olmaz. 
Bilgisayarlar arasında veritabanı aracılığı ile bilgi aktarmanın kötü yanlarından biri iletişimin direkt olamaması. Dinleyen tarafın ne dendiğini anlaması için veritabanını sürekli olarak belli bir zaman içerisinde, (birkaç saniye veya dakika ... ) sorgulaması gerekir.

Diğer yol ise direkt TCP/IP kullanmanız. Sizin uygulamanızda bir taraf da oluşan event'in diğerlerine bildirilmesi gerektiği için de uygun protokol UDP olacaktır. IP'nizin bağlı olduğu subnet'e tuşa basılan makina adını yayımlamak diğer makinaların hepsinde bu bilgiyi almayı sağlar. TCP kullanılması durumunda da bütün makinalarda , diğer makinaların hepsi ile bir baplantı yapılıp, bütün bağlantılara bu yanını yayımlamanız gerekli. Burada ki uygulama bir grup içindeki birinin kendi adını gruba duyuracak şekilde bağırması şeklinde olduğu için de UDP kullanmak uygun. TCP olsaydı grub içindeki herkesle ayrı ayrı konuşmak gerekirdi.

Ayrıca Access taşınabilirliği vs. açısından iyidir. Ancak ileride ciddi veritabanı uygulamaları yapmayı düşünürseniz SQL Expresss de (eski MSDE) aklınız da olsun.

Başlık: Ynt: Bir adet veri tabanını birden çok bilgisayarın kullanabilmesi?
Gönderen: RcALTIN - 14 Ocak 2011, 17:55:43
Alıntı yapılan: iyildirim - 14 Ocak 2011, 17:02:40
TCP olsaydı grub içindeki herkesle ayrı ayrı konuşmak gerekirdi.

Tek tek tüm aygıtlarla konuşmak yerine ilgili ağın broadcast adresine(255.255.255.0 için 192.168.1.255 mesela) data yollasak ne olur? bu mümkün değilse nedeni nedir? yanlış anlamayın merak ettiğim için soruyorum...
Başlık: Ynt: Bir adet veri tabanını birden çok bilgisayarın kullanabilmesi?
Gönderen: iyildirim - 14 Ocak 2011, 18:09:05
Yanlış anlaşılacak bir şey yok.

Zaten UDP kullanıp gruba seslenmek dediğim şey de bu. Mümkün değil diye birsey yok. Sadece belirtmek istediğim tek tek kişilerle konuşurken TCP gruba seslenirken UDP nin uygun olduğudur.  UDP 'de gruba seslenir ve kim duydu kim duymadı diye peşine düşmesiniz. İlgili subnet'e broadcast paketi yollamak da aynı şey zaten.  TCP de paketlerin alındığının onayı da sorgulanır.
Başlık: Ynt: Bir adet veri tabanını birden çok bilgisayarın kullanabilmesi?
Gönderen: EMG81 - 14 Ocak 2011, 21:35:39
Değerli yanıtlarınız için çok teşekkür ederim. Evet ip ile çalışmak daha mantıklı sanki... Veri tabanı ile çalışırken bikaç sorun oluşuyor zaten.

Örneğini;

yaptığım program ın database yolu...(örneğin c:\.........xxxxx...x)

yani her program database in bulunduğu konumu beim belirlediğim yerden buluyor.(ve database konumunu program çalışırken değiştirmeyi bilmiyorum)

programını internete koyunca indiren arkadaşlar programı çalıştıramıyacaklar. Bunun nedeni de ana makinanın ismi ve veri yolu... bende "\\Samsung\......" vs iken Başka birisinde bu ad farklı olacağından database i bulamama sorunu verecek...

Direk ip ile haberleşmek en mantıklısı...

Şimdi Karşımda 1 adet textbox ve 1 adet buton var... çok basitçe textbox ta yazan yazıları ip sini girdiğim ve ondada aynı benim programımın çalıştığı pc nin ekranına göndermek istiyorum... Değerli yardımlarınızı bekliyorum... İyi çalışmalar...
Başlık: Ynt: Bir adet veri tabanını birden çok bilgisayarın kullanabilmesi?
Gönderen: EMG81 - 15 Ocak 2011, 04:25:44
Arkadaşlar nette yaptığım araştırmalar sonucu Microsoft winsock kompanentini buldum...


Sanırım tam aradığım şey bu. IP ile diğer Pc yada Pc lere bağlanıyoruz... fakat bir ton denemelerim sonucu bir türlü çalıştıramadım...(ip ler doğru kesin eminim)  TCP ve UDP bağlantı şekillerinin 2 sinide denedim...

Sabaha Programı rapid e yükleyip huzurunuza sunucam... Böyle bir proje ile uğraşmış arkadaşlar varsa LÜTFEN İLGİLENİN ! yardımlarınızı bekliyorum...
Başlık: Ynt: Bir adet veri tabanını birden çok bilgisayarın kullanabilmesi?
Gönderen: RcALTIN - 15 Ocak 2011, 10:04:11
VB.Net kullanacaksanız "System.Net.Sockets" bunu araştırın. Yok VB6 diyorsanız winsock da devam edin.

Her ikisi içinde önceden yazılmış basit chat projelerini v.s araştırın,  soket programlama yapısını iyice kavrayın...
Başlık: Ynt: Bir adet veri tabanını birden çok bilgisayarın kullanabilmesi?
Gönderen: peko - 15 Ocak 2011, 11:14:34

Daha önce ASP, Vb, gibi programlarla çoklu uygulamalar yazdım.  Bir bilgisayarı veritabanını olarak ayarlayıp diğer makinelerin ona ulaşmasını sağlıyorum. Makine ismi olarak ulaşmanı tavsiye etmem, ip ile ulaşmak en doğru çözüm.

Client makinelerde dbcon.xxx diye bir dosyanın içinde bağlantı string'i ni tutarsın. Programın içine de bu dbcon'u include edersin.
Geri kalan işlemlerinde ne yapmak istiyorsan yapabilirsin..  Access 2007'ye vb.net üzerinden bağlanmak için aşağıdaki kodu kullanabilirsin.

#Region "Database Baðlantisi"


    Private Sub condb()
        Try

            'Dim dbroot As String = AppDomain.CurrentDomain.BaseDirectory
            'Dim dbname As String = decr("8CB4B765977E0CDB67F060983A2B23D2")
            'Dim dbpass As String = decr("B409A65133E8B15E9A3387CDA3D81AF1")

            ' Access VT Connections

            'sConnString = _
            '"Provider=Microsoft.Jet.OLEDB.4.0;" _
            '& "Data Source=" & dbroot + dbname & "; " _
            '& "Jet OLEDB:Database Password=" & dbpass & "; " _
            '& "Persist Security Info=true;"

            ' SQL VT Connections
            sConnString = _
            "PROVIDER=SQLOLEDB;DATA SOURCE=EKREMA\SQLEXPRESS;UID=xxxxxxx ;PWD=xxxxxx;DATABASE=EKOVT"

            cnn.ConnectionString = sConnString
        Catch ex As Exception
            ex.Message.ToString()
        End Try
    End Sub

#End Region


Bunun dışında, bilgisayarlar arası her hangi bir dosya ya da bilginin taşınması için webservis kullanmanı tavsiye ederim.
Basitçe nasıl yapacağına dair bilgiyi burdan indirebilirsin.

http://rapidshare.com/files/442658570/WebServisKurulum.pdf (http://rapidshare.com/files/442658570/WebServisKurulum.pdf)


kolay gelsin





Kolay gelsin..
Başlık: Ynt: Bir adet veri tabanını birden çok bilgisayarın kullanabilmesi?
Gönderen: EMG81 - 15 Ocak 2011, 22:13:51
Arkadaşlar değerli yanıtlarınız için çok çok teşekkür ederim...


hemmen dediklerinizi inceliyorum... Ayrıca sizinde benim programımı incelemeniz için nete upload ettim. Bakıp kurcalarsanız sevinirim...

http://rapidshare.com/files/442750724/Aae__Baae_lantae_sae__Deneme.rar

Yalnız sizden birşey rica edicem. winsock kompanentinin 2 adet protokolü var. TCP , UDP ... Bunlar hakkında kısa bilgilendirici şeyler yazarsanız çok sevinirim...
Başlık: Ynt: Bir adet veri tabanını birden çok bilgisayarın kullanabilmesi?
Gönderen: eseneren - 15 Ocak 2011, 22:27:12
Alıntı yapılan: RcALTIN - 14 Ocak 2011, 17:55:43
Alıntı yapılan: iyildirim - 14 Ocak 2011, 17:02:40
TCP olsaydı grub içindeki herkesle ayrı ayrı konuşmak gerekirdi.

Tek tek tüm aygıtlarla konuşmak yerine ilgili ağın broadcast adresine(255.255.255.0 için 192.168.1.255 mesela) data yollasak ne olur? bu mümkün değilse nedeni nedir? yanlış anlamayın merak ettiğim için soruyorum...
her ip blogunun bır nerwork bır broadcatı olur o adrese sahıp bır cıhaz tanımlı olsa dedıgın gıbı olabılırdı.
Başlık: Ynt: Bir adet veri tabanını birden çok bilgisayarın kullanabilmesi?
Gönderen: RcALTIN - 15 Ocak 2011, 22:32:55
Alıntı yapılan: senerenemre - 15 Ocak 2011, 22:27:12
Alıntı yapılan: RcALTIN - 14 Ocak 2011, 17:55:43
Alıntı yapılan: iyildirim - 14 Ocak 2011, 17:02:40
TCP olsaydı grub içindeki herkesle ayrı ayrı konuşmak gerekirdi.

Tek tek tüm aygıtlarla konuşmak yerine ilgili ağın broadcast adresine(255.255.255.0 için 192.168.1.255 mesela) data yollasak ne olur? bu mümkün değilse nedeni nedir? yanlış anlamayın merak ettiğim için soruyorum...
her ip blogunun bır nerwork bır broadcatı olur o adrese sahıp bır cıhaz tanımlı olsa dedıgın gıbı olabılırdı.

o adrese tanımlı cihaz nasıl oluyor şimdi tam olarak? 192.168.1.255 zaten 192.168.1.0 networkünün brooadcast adresi olunca(subnet mask 255.255.255.0 için) buraya gönderilen tüm verileri ağdaki tüm cihazların(192.168.1.1-254) alması gerekiyor, ancak TCP olunca checksum geri dönüşleri söz konusu olduğundan tek yönlü UDP'yi önermiş @iyildirim
Başlık: Ynt: Bir adet veri tabanını birden çok bilgisayarın kullanabilmesi?
Gönderen: EMG81 - 15 Ocak 2011, 22:38:08
Nelerden bahsettiğinizi birde ben anlıyabilsem... ???
Başlık: Ynt: Bir adet veri tabanını birden çok bilgisayarın kullanabilmesi?
Gönderen: eseneren - 15 Ocak 2011, 23:17:51
konuya baska acıdan yaklasmısım ,192.168.2.0 \24 ıcın 2.255 broadcast adresınde bır cıhaz tanımlı olamaz pc swırh yada router yanlıs anlasılmasın.
Başlık: Ynt: Bir adet veri tabanını birden çok bilgisayarın kullanabilmesi?
Gönderen: peko - 16 Ocak 2011, 00:18:07

Alıntı YapNelerden bahsettiğinizi birde ben anlıyabilsem..

Eğer yapmak istediğin access veritabanı hazırlayıp, bu veritabanına bir kaç pc'den ulaşmaksa yukarıda verdiğim komutla yapacaksın.
TCP ,UDP , Brocast gibi konuları ile şu aşamada uğraşıp kafanı karıştırmaya gerek yok gibi.

Bir bilgisayara access yükle, paylaşım ve güvenlik için gerekli ayarlarını yap.
Veritabanı dosyanı hazırla ve şifrele.
Diğer bilgisayarda dbcomm diye bir dosya içine yukarıdaki verdiğim kodu kendine göre düzenleyerek yaz. (ASP,VB.NET,PHP vs.. )
Programın içinden dbcomm dosyasını çağır, ufak bir test yapmak üzere veritabanından bir bilgi çağır, ekrana yazdır.
Sorun yoksa devam edebilirsin, varsa gelen hata mesajına göre yorumlamaya devam ederiz..

Kolay gelsin.


Başlık: Ynt: Bir adet veri tabanını birden çok bilgisayarın kullanabilmesi?
Gönderen: eseneren - 16 Ocak 2011, 00:49:28
Eger database konusuna uzaksan iş kolaydan access excel vs gıbı dosyaya bır cok kısı ulassın kayıt etsın okusun hatta sıralasın web den erıssın hatta sıfresı olsun yetkılendırme olsun kımı okusun kımı yazabılsın vs dıyorsan dbqwik dıye bır program kullanarak guzel bır ıs cıkartabılırsın 1-2 saatte.
Başlık: Ynt: Bir adet veri tabanını birden çok bilgisayarın kullanabilmesi?
Gönderen: EMG81 - 16 Ocak 2011, 00:58:41
Şimdi asıl amacım Bir pc den başka bir pc ye String veri göndermekti.. Bunuda en kolay ve en basit şekilde microsoft winsock ile yapabileceğimi düşünüyorum... winsock u çalıştırabilsem sorun çözülecek... Ama bir türlü çalıştıramadım mereti... :-\
Başlık: Ynt: Bir adet veri tabanını birden çok bilgisayarın kullanabilmesi?
Gönderen: peko - 16 Ocak 2011, 02:05:37

Eklediğim webservis dökümanı bu string'i göndermen için yeterli olabilir.
İncelemeni tavsiye ederim.
Başlık: Ynt: Bir adet veri tabanını birden çok bilgisayarın kullanabilmesi?
Gönderen: evreno - 02 Ekim 2011, 14:36:52
web servis falan biraz karıştırır iş
aynı network içerisinde ise ODBC kullanabilirsin
veritabanı dosyasının bulunduğu klasörü diğer bilgisayarın ulaşabileceği şekilde paylaşıma açarsan
ve clientlarda ilgili dataya ODBC bağlantısını ayarlarsan
yazdığın programın içerisinden data bağlantısını ODBC ile kurdurabilirsin
kapsamlı bir yazılımsa access kullanmanı pek tavsiye etmem zamanla sıkıntılar yaşarsın
sana tavsiyem sql 2005 express veya 2008 express kullanman olacaktır
Başlık: Ynt: Bir adet veri tabanını birden çok bilgisayarın kullanabilmesi?
Gönderen: ZZombie - 18 Ekim 2011, 15:53:22
winsock ile doğru yoldasınız aslında.
Lakin programı biraz ayıralım. 2 ayrı programcık yapmanız daha iyi olur kanımca.
1 tanesi sunucu (server) programı.
1 tane de istemci (client) programı.

Veritabanı ile ilgili tüm işlemleri sunucu programı yapsın.
Aynı zamanda winsock bağlantısı açıp diğer programlardan gelen istekleri dinlesin.

İstemci programı ise çalıştığı bilgisayarda winsock dinleyecek.
istemci lerin birinden girilen string gönder denildiğinde bu sunucuya gidecek.
Sonra sunucu bunu veritabanına hangi makineden ne geldi diye kaydedecek.
Hemen ardından dan diğer istemcilere yollayacak.

istemciler de winsock ta sunucundan gelen bir bilgi var ise bunu alıp textbox içinde gösterecek.
Aynı şekilde veri girilirse yine sadece sunucuya gidecek.

Bu şekilde olursa Veritabanı işlemlerini sadece bir noktada tutmuş olursun.
Aynı zamanda tüm programlar için veritabanı erişimi vs yazmak zorunda kalmazsın.

Tabii kafandaki bu tür birşey mi değil mi emin deilim.
Ama sanırım bu türde bir şeyden bahsediyorsun.