yazılım etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
yazılım etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Merhaba Arkadaşlar
Bazı tip hataları sürekli alıyoruz ve çözümünü daha önce kullandığımız halde unutuyoruz bunun için bu bölüm de SQLite dan aldığım hataları ve çözümlerini denk geldikçe ve ya aklıma geldikçe burada paylaşacağım
1-) System.Data.SQLite, Version=1.0.94.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139' derlenmesi yüklenemedi cart curt :)
Çözüm : Project >> ... Properties >> Build >> Platform Target >> bölümünü x86 olarak değiştirdiğimizde sorun halloluyor :D tabi bu kullandığınız dll ye göre değişim gösterebilir.
Evet arkadaşlar farkındayım çok gıcık bir hata. Proğramı bitiriyoruz heycanla setup alıyoruz ( kendi bilgisayarımızda mükemmel çalışıyor ) diğer bilgisayara bir yüklüyoruz o da ne Windows ... proğramı çalışmayı durdurdu bilmem ne. Ve hatamız ne onuda bilmiyoruz sonra hatayı bul bulabilirsen.
Şimdi ben bu yazımda size direk hatanız şudur demiyeceğim daha doğrusu diyemiyeceğim. Çünkü bunun bir çok sebebi var. Mesela freamworkler hatalıdır ya da ne bileyim gerekli componentleri setup dosyasına eklememişsindir falan filan..
Peki hatayı nasıl gidereceğiz?
Şimdi arkadaşlar hatayı giderebilmemiz için öncelikle hatanın ne olduğunu bilmeliyiz. Ben size hatanın ne olduğunu bize söyleyen kodu yazmanızı sağlıyacam böylelikle karşınıza proğram çalışmayı durdurdu diye bir hata çıkmayacak ta hata şu şu bunun için proğram bu bilgisayarda çıkmıyor diyecek.
Kodlar; (program.cs ye eklenicek hatta size son halini paylaşıyorum )
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace kasadefterim
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
AppDomain.CurrentDomain.UnhandledException +=
new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
Application.ThreadException +=
new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new splash());
}
static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
try
{
Exception ex = (Exception)e.ExceptionObject;
MessageBox.Show("Hoops! Lütfen proğram geliştiricinizle iletişime geçiniz. "
+ "Hata Bilgisi:\n\n" + ex.Message + ex.StackTrace,
"Fatal Error", MessageBoxButtons.OK, MessageBoxIcon.Stop);
}
finally
{
Application.Exit();
}
}
public static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
{
DialogResult result = DialogResult.Abort;
try
{
result = MessageBox.Show("Hoops! Lütfen proğram geliştiricinizle iletişime geçiniz. "
+ "Hata Bilgisi:\n\n" + e.Exception.Message
+ e.Exception.StackTrace, "Application Error",
MessageBoxButtons.AbortRetryIgnore, MessageBoxIcon.Stop);
}
finally
{
if (result == DialogResult.Abort)
{
Application.Exit();
}
}
}
}
}
Evet arkadaşlar proğram.cs nizin son hali bu şekilde olacak gerekli düzenlemeeri yapabilirsiniz. Bu sayede hatanın ne olduğunu anlayıp daha kolay giderebiliyoruz. Örneğin benim hatam SQLite.dll yi setup a dahil etmemişim. Ayrıca setup alırken uyarı kısımlarını dikkate alın çünkü benim hatam orda da yazıyormuş :)
Arkadaşlar Merhabalar :)
Bir önceki yazılarımda SQLite macerasına başlamıştık öncelikle onları hatırlatmakta fayda var
Şimdi ise setup alırken nelere dikkat etmemiz gerektiğine bakalım. Öncelikle ilk yazımda indirmeniz gereken dosyayı paylaşmıştı ve referance olarak bir tane .dll eklemeniz gerektiğinden bahsetmiştim. Bu proğramı kendi bilgisayarınızda çalıştırmak için yeterli ancak setup alıp başka bir bilgisayarda proğramı çalıştırmaya gelince işler değişiyor.
Öncelikle hangi freamwork de çalışıyoruz iyi bilmemiz gerekiyor. Mesela eğer visual studio 2012 de çalışıyorsanız ve de ayarları hiç değiştirmediyseniz çalıştığınız freamwork .Net freamwork 4.5 dir.Eğer visual studio ile çalışıyorsanız bildiğim kadarıyla .Net freamwork 4.0 dır. Şimdi ben visul studio ile çalışıyorum ancak eğer siz 4.5 freamwork de proğramı setup ederseni şunu bilin ki xp bilgisayarlarda çalışmayacaktır çünkü xp ler en fazla 4.0 destekliyor :)
Güzel bir proğram yaptığımızda ise bunun her bilgisayarda çalışmasını arzularız öncelikle ben de sırf bu yüzden proğramımın ayarlarını değiştirip 4.0 freamwork de çalışıyorum. Ayarlamayı bilmeyen için ve bu konuyu daha fazla dağıtmamak adına başka bir yazımda paylaşmayı düşünüyorum.
Öncelikle ilk yazımda verdiğim ve freamwork'ünüze uygun olan dosyayı bilgisayarınıza indirdiniz. SQLite.dll yi de referanslara eklediniz ancak burda atladığımız bir nokta programın çalışması için 2-3 referans daha eklememiz gerekecek bunları yazıyorum şimdi
SQLite setup için gereken .dll ler
- EntityFramework.dll
- System.Data.SQLite.dll
- System.Data.SQLite.Linq.dll
- System.Data.SQLite.EF6.dll
Bu .dll lerin hepsini indirdiğiniz dosyanız da mevcut. Referans ekle kısmından projemize ekliyoruz daha sonra hepsinin tek tek properties özellikleirni True yapıyoruz. Böyle yapınca bi bakıyoruz ki bizim .exe nin yanına hepsi gelmiş. ( Gelmediyse Debug--> Release değişimi yapın ). Setup ı alırken de bunların hepsini setup klasörümüze ekliyoruz ve artık proğramımız en azından veritabanımız her bilgisayarda çalışır hale geliyor :)
Evet bir önceki yazımda SQLite kullanmak için eklememiz gereken kütüphaneti anlatmıştım.
Eğer okumadıysanız : http://gozdeveyakup.blogspot.com.tr/2015/02/c-da-sqlite-kutuphanelerinin-eklenmesi.html
Bu yazı ile birlikte SQLite kütüphanemizi ekledik iyi güzen ancak connection stringi bir türlü ayarlayamadık çünkü diğerlerine göre farklı bunun için basit bir örnek yapalım.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SQLite;
namespace sqlite
{
public partial class Form1 : Form
{ string connection;
public Form1()
{
InitializeComponent();
connection = @"Data Source = C:\Users\YAKUP\Desktop\denemeDb.db; version = 3";
}
private void button1_Click(object sender, EventArgs e)
{
SQLiteConnection bag = new SQLiteConnection(connection);
try
{
bag.Open();
MessageBox.Show("aferin");
}
catch (Exception hata)
{
MessageBox.Show(hata.Message);
}
}
}
}
// Evet arkadaşlar kodumuz bu. Bundan bahsetmem gerekirse öncelikle isim uzayını ekliyoruz ( namespace ) using System.Data.SQLite; yani bunu. Daha sonra connection stringimizi yazıyoruz tabi bunu yapmadan önce yardımcı proğramlar sayesinde veritabanımızı oluşturmuş olmamız gerek. Ben kendi masaüstüme oluşturduğum veritabanına bağlandım. Bu arada veritabanı uzantımız .db olarak yapmalıyız. Ardından forma bir tane buton ekledim deneme yapabilmek için butona tıklandığında baglantı gerçekleştiriyorum eğer başarılı ise aferin yazıyor. Bu yazım bu kadar birdahakinde SQLite ile ilgili gerekli bilgileri vermeye devam edicem çünkü Türkçe kaynak çok az malasef..
Eveeet bir proje yapalım dedik sıvadık kolları girdik projemize bir baktık ki veritabanı kullanmak gerekiyormuş. İyi tamam dedik kullanırız ne kullanıcaz? baktık şöyle pratik mi pratik kurulumsuz basit bir access var. Hemen daldım access de yazdım projeyi sonra bir sıkıntı çıkıyor soruyorsun millete access kullanma ona gidiyorsun sakın access yapma. Dediler ki o şirin gözüken canavardır :) ( ilerde sıkıntı çıkarıyormuş ) tamam dedik o zaman ne kullanalım bir baktık millet SQL Express diye ölüp bitiyor. Tamam dedik bizde kurarız öğreniriz SQL Express i ve neticede zorlu bir kurumdan sonra birsürü sıkıntı çektikten sonra ( yok dil ayarı yok string derken ) setup alayımda projeyi dağıtayım dedim. puuuuuffff her şey o anda bitti neden çünkü SQL Express kurulu olmayan bilgisayarlarda çalışmıyormuş... Neyse lafı daha uzatmadan veritabanı olarak SQLite kullanmaya karar verdim sonunda :)
SQLite da öle kolay lokma değilmiş malesef :) Şimdi SQLite da bir sürü arayüz proğramları mevcut hatta firefox da bile eklenti ile yapılabiliyor. ancak ben Türkçe desteği de olan SQLite Administrator'u tercih ettim. Buradan indirebilirsiniz. Bunu indirdikten sonra zaten biraz karıştırınca mantığı anlarsınız ki Türkçe proğram. Neyse şimdi SQLite ile visual'ı ayarlamaya geldik. Malesef ki internette neredeyse hiç Türkçe kaynak yok bunun için ilklerden olucam ben çok aradım siz hemen halledin inşallah. Tabi bunun içinde google da ön sıralarda olmak lazım bunun içinde yorumlarınız ve sayfada kalmanız gerekli önemle duyrulur :)
Tamam arkadaşlar arayüzüde anladığımıza göre şimdi bağlıyalım öncelikle bizim neredeyse tek ve yegane kaynağımız http://www.sqlite.org/ adresi. Şimdi buraya giriniz. Buradan Eğer Visual Studio 2010 kullanıyorsanız 32 bit windows olanın ilk seçeneğini indirin. Kalın yazıyla yazmışlar zaten yok eğer 2012 kullanıyorsanız yine 32 bit Freamwork 4.5 i indirin kurun.
Daha sonra proğramı açın referans ekleden bunu kurduğunuz yere yani (en azından bende öle )
C:\Program Files (x86)\System.Data.SQLite\2012\bin adresinde System.Data.SQLite.dll olanı projenize ekleyin. 2010 indirenler onu eklesin aman ha. Şimdi name space imize Using System.Data.SQLite ekledikten sonra çalımaya başlayabilirsiniz :))
Hadi Sağlıcakla kalın önerilerimi unutmayın ;)

Arkadaş programa bir reportviewer ekliyelim dedik setup da hata hata hata kafayı yedim. Allah'a şükür çalıştı sonunda. Burada yaziim de birdahakine aynı hataları yaşamıyalım.
Şimdi öncelikle ReportViewer kullandık iyi güel database seçtik adaptör oluşturduk onu ona bağladık filan sıkıntı yok. sıkıntı nerde sıkıntı setup oluşturmada. Bu ReportViewer denen şey bir türlü çalışmadı başka bilgisayarda. Öncelikle ilk bilmemiz gereken şey bu ReportViewer'ın çalışması için gereken dll'ler
- Microsoft.ReportViewer.Common.dll
- Microsoft.ReportViewer.WinForms.dll
- Microsoft.ReportViewer.ProcessingObjectModel.dll
- Microsoft.SqlServer.Types.dll
Bunlar olmadan bizim ReportViewer denen şey çalışmıyormuş. Peki bunlar nasıl yükleniyor?. Şimdik öncelikle ReportViewer kullanmaya başlayınca ilk ikisi kendiliğinden geliyor reference kısmımıza. Açıp bakabilirsiniz:). Daha Sonra sıkıntı diğer ikisinde 3. yü eklemek için Reference-->Add Reference-->Browse ye tıklıyoruz.
Oradan
C:\Windows\assembly\GAC_MSIL\Microsoft.ReportViewer.ProcessingObjectModel\version 11.0.0.0\Microsoft.ReportViewer.ProcessingObjectModel.dll tarzında birşey olacak ama bu sizde olmaya da bilir o zaman ne yapıyoruz. Hemen buraya tıklıyoruz indirip kuruyoruz tekrar bakıyoruz artık olması gerek :) 4. içinde aynı yöntemi yapıyoru onu da referanslarımıza ekliyoruz.
Bitti mi? Hayırr bundan sonra bu eklediğimiz referansların hepsinin üzerine geliyoruz sağ tık yapıp properties kısmına giriyoruz. Oradan Copy Local kısmını True olarak belirliyoruz.(4 içide). Daha sonra garanti olması açısından programı kapatıp programın olduğu yerde bi klasörünün içine bunlar gelmiş mi bakıyoruz ( debug veya relase hangisi ile çalışıyorsanız ikisinden birinin içindedir.) Geldiyse sıkıntı yok tekrar devam ediyoruz setup oluşturma kısmına geçiyoruz burda dikkat etmek gereken şeyler
1-) Ben vs 2012 ile alıyorum setubu setup klasörünün içininde bu dll leri mutlaka atın.
2-) Daha sonra da aynı klasöre Report.rdlc dosyamızı kesinlikle ekliyoruz ve mutlu mesut setup alıyoruz :))
Bazen karıştırıyorum onun için yazdım
MessageBox.Show("Birinci satır\nİkinci satır","Hata",MessageBoxButtons.OK,MessageBoxIcon.Error);
bazende mesela komuttan sonra aşağıya geçirmek gerekebilir böle olduğu zamanlarda \ işaretini tanımıyor bunun içinde;
string klasorolustur = klasorYeri + @"\" + klasorAdi;
@ işareti koymak önemli ;)
Bu hata en çok aldığım hatalardan biri açık olan bir bağlantı tekrar açılamaz. EEe o zaman ne yapıyormuşuz bundan sonra bağlantıyı açmadan önce açık unutup unutmamışmıyız diye kontrol ediyormuşuz. Nasıl ediyormuşuz böyle;
Access ve Sql için bu komut aynı sadece bağlantı cümlesini değiştir :)
if (bag.State == ConnectionState.Open)
{
bag.Close();
}
Access veritabanında yedek alırken kullanılan kodlar;
try // try catch yapısı hata analizini sağlar
{
string a = DateTime.Now.ToShortDateString(); / bugünün tarihini kısaltarak kullandım
string klasorYeri = Application.StartupPath;//Klasör yerini belirtiyoruz.(kurulduğu yer)
string klasorAdi = a + " yedek";//Klasör adını belirtiyoruz.
string klasorolustur = klasorYeri + @"\" + klasorAdi; //bu yere bu isimli klasör oluştur dedi
Directory.CreateDirectory(klasorolustur);//yedek veritabanının yerini oluşturuyor.
System.IO.File.Copy("veriler.accdb", klasorYeri + @"\" + a + " yedek\\" + "veriler" + ".accdb"); // veriler isimli veritabanı klasoroluşturdaki yere veriler adı ile kayıt edildi
MessageBox.Show("Veritabanı " + klasorYeri + " klasörüne kaydedilmiştir", "Dikkat",
MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch
{
MessageBox.Show("Yedekleme sırasında bir hata oluştu." + "\n" + "Bu hatanın sebebi bugün başka bir yedeğin alınmış olması olabilir" + "\n" + Application.StartupPath + "\n" + "Burayı kontrol edebilirsiniz isterseniz bugünün yedeğini silip tekrar yedek alabilirsiniz.");
}
Kodların yanına unutmuyayım die açıklamalar ekledim :)

