none
c# access veri tabanına kayıt yaparken bazı karakterleri kaydetmiyor RRS feed

Yanıtlar

  • Yazmayi yaptiginiz sekilde parametre kullanacaksınız. ASLA  ve ASLA daha önceki mesajinizdaki ve en sondaki select gibi "select ..."+ .. + seklinde yazmayın, parametre kullanın. Butun sorunların bası parametre kullanmamak. Ornek:

    using (OleDbConnection cn = new OleDbConnection(blnt.ConnectionString))
    using (OleDbCommand cmd = new OleDbCommand(@"select veri 
    from verikayit 
    where satir = @satir and 
          sutun = @sutun and
          isim  = @isim", cn))
    {
    	cmd.Parameters.Add("@satir", OleDbType.Integer).Value = j;
    	cmd.Parameters.Add("@sutun", OleDbType.Integer).Value = i;
    	cmd.Parameters.Add("@isim", OleDbType.VarChar).Value = a;
    
    	cn.Open();
    	OleDbDataReader dr = cmd.ExecuteReader();
    	while (dr.Read())
    	{
    		string asdf = dr["veri"].ToString(); // bu satir cok amacsiz
    	}
    }
    

    i ve j aslında integerdir diye dusundum, sizin orijinal kodunuzda hersey sanki string.



    How to create a Minimal, Reproducible Example
    The way to Go.
    World's most advanced open source (object-) relational Database.
    Flutter (for mobile, for web & desktop.

    18 Eylül 2019 Çarşamba 21:44

Tüm Yanıtlar

  • Doğrudan sql cümlesine ekleme yapmıyorsunuz dimi ? Parametre kullanmalısınız.

    Ayrıca access yerine başka bir şey tercih edin mesela SQLite.

    • Yanıt Olarak Öneren CetinBasoz 14 Eylül 2019 Cumartesi 21:44
    14 Eylül 2019 Cumartesi 21:34
  • OleDbCommand cmd1 = new OleDbCommand("INSERT INTO verikayit VALUES ('" + a + "','" + i + "','" + sifrelenecek_Ad + "','" + harfler[i] + "')", blnt);
                                cmd1.ExecuteNonQuery();
     şu sekilde eklemeye calısıyorum harfler dizisinin içinde
    18 Eylül 2019 Çarşamba 19:23
  • OleDbCommand cmd1 = new OleDbCommand("INSERT INTO verikayit VALUES (satir,sutun,isim,veri)", blnt);
                                cmd1.Parameters.AddWithValue("@satir", a.ToString());
                                cmd1.Parameters.AddWithValue("@sutun", i.ToString());
                                cmd1.Parameters.AddWithValue("@isim", sifrelenecek_Ad);
                                cmd1.Parameters.AddWithValue("@veri", harfler[i].ToString());
                                cmd1.ExecuteNonQuery();
    şimdi şu şekil yaptım su an sorunsuz kaydediyor ama bu seferde verileri çekerken gelmiyorlar onu nasıl yapacagım
        OleDbCommand cnd = new OleDbCommand("select veri from verikayit where satir = '" + j.ToString() + "' and sutun ='" + i.ToString() + "' and isim = '" + a + "'", blnt);                                  
                                        OleDbDataReader dr = cnd.ExecuteReader();
                                        while (dr.Read())
                                        {
                                            string asdf = dr["veri"].ToString();
    şu sekilde cekiyorum verileri

    18 Eylül 2019 Çarşamba 19:49
  • Yazmayi yaptiginiz sekilde parametre kullanacaksınız. ASLA  ve ASLA daha önceki mesajinizdaki ve en sondaki select gibi "select ..."+ .. + seklinde yazmayın, parametre kullanın. Butun sorunların bası parametre kullanmamak. Ornek:

    using (OleDbConnection cn = new OleDbConnection(blnt.ConnectionString))
    using (OleDbCommand cmd = new OleDbCommand(@"select veri 
    from verikayit 
    where satir = @satir and 
          sutun = @sutun and
          isim  = @isim", cn))
    {
    	cmd.Parameters.Add("@satir", OleDbType.Integer).Value = j;
    	cmd.Parameters.Add("@sutun", OleDbType.Integer).Value = i;
    	cmd.Parameters.Add("@isim", OleDbType.VarChar).Value = a;
    
    	cn.Open();
    	OleDbDataReader dr = cmd.ExecuteReader();
    	while (dr.Read())
    	{
    		string asdf = dr["veri"].ToString(); // bu satir cok amacsiz
    	}
    }
    

    i ve j aslında integerdir diye dusundum, sizin orijinal kodunuzda hersey sanki string.



    How to create a Minimal, Reproducible Example
    The way to Go.
    World's most advanced open source (object-) relational Database.
    Flutter (for mobile, for web & desktop.

    18 Eylül 2019 Çarşamba 21:44
  • veri tabanına her şeyi string olarak kaydediyorum ve amacsız dediginiz satırda da veri tabanından gelen veriyi kullanmak için yazdım parametre kullanmama rağmen gelen verilerdeki . , ; () gibi karakterleri yine yazdıramadım

    27 Eylül 2019 Cuma 17:49
  • veri tabanına her şeyi string olarak kaydediyorum ve amacsız dediginiz satırda da veri tabanından gelen veriyi kullanmak için yazdım parametre kullanmama rağmen gelen verilerdeki . , ; () gibi karakterleri yine yazdıramadım

    Satir, sutun degerlerinin integer olmasini beklerdim, onlar da string ise, parametrelerde data tipini VARCHAR olarak değiştiriniz. 

    O satir icin amaçsız dedim, çünkü hiçbir sey yapmıyor, sadece bulduğu tum kayitlari dolaşıp, sonucu asdf adinda "lokal" bir değişkene alıyor. O değişken degerini kullanmadiginiz icin bir amaci yok o sekilde.

    Eger, verilen bir satir, sutun ve isime karsilik tek bir kayıt geliyor ise, o zaman while(dr.Read()) kullanımı gereksiz, sanki N tane kayit bekleniyormuş gibi. Onun yerine:

    if (dr.Read()) kullanabilirsiniz.

     



    How to create a Minimal, Reproducible Example
    The way to Go.
    World's most advanced open source (object-) relational Database.
    Flutter (for mobile, for web & desktop.

    28 Eylül 2019 Cumartesi 16:41
  •      OleDbCommand cnd = new OleDbCommand("select veri from verikayit where satir = @satir and sutun = @sutun and isim = @isim", blnt);
                                        cnd.Parameters.Add("@satir", OleDbType.VarChar).Value=j;
                                        cnd.Parameters.Add("@sutun", OleDbType.VarChar).Value = i;
                                        cnd.Parameters.Add("@isim", OleDbType.VarChar).Value =a;
                                      /*  cnd.Parameters.AddWithValue("@satir", j);
                                        cnd.Parameters.AddWithValue("@sutun", i);
                                        cnd.Parameters.AddWithValue("@isim", a);*/
                                        OleDbDataReader dr = cnd.ExecuteReader();
                                        if(dr.Read())
                                        {
                                            string asdf =dr["veri"].ToString();
                                            string qwer = "";
    
                                            //
                                            #region sifrecozme
                                            ...
                                            #endregion
                                            //
    
                                            richTextBox1.Text += qwer.ToString();
                                        }
    Tam olarak şu şekil de kodum ama hala "asd(asd))ad;da s.:d a  s" yazıyorsam veri "asdasdaddasdas" olarak geliyor ama veri tabanım da verileri kaydederken veri tabanına normal olarak kaydediliyorlar
    28 Eylül 2019 Cumartesi 19:22
  • Bu yazma degil okuma kodu ve sonucu richTextBox'taki Text'e ekleyerek yaziyorsunuz. qwer zaten string degil mi? Neden ToString() kullanıyorsunuz?

    Yazma kodunuzu kontrol edin ve veritabanında gercekten ne yazdigindan emin olun, richTextBox yerine textbox ya da label gibi bir şey kullanın.



    How to create a Minimal, Reproducible Example
    The way to Go.
    World's most advanced open source (object-) relational Database.
    Flutter (for mobile, for web & desktop.

    28 Eylül 2019 Cumartesi 20:38
  • Herşey normal gözüküyor hata göremiyorum (tostring hariç) kodlarda sql server a geçiş yapmaya calısacagım yardımlarınız için cok tesekkür ederim
    30 Eylül 2019 Pazartesi 19:24
  • Valla ben kodu henüz göremedim, hata yoksa calisir ve o karakterleri kaydeder. Ornek:

    void Main()
    {
    	string path = @"D:\data\Northwind.mdb";
    	string deneme = @"asd(asd))ad;da s.:d a  s";
    
    	using (OleDbConnection con = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path))
    
    	{
    		con.Open();
    		using (OleDbCommand cmd = new OleDbCommand("create table dummy (id integer, metin text)", con))
    		{
    			cmd.ExecuteNonQuery();
    		}
    		using (OleDbCommand cmd = new OleDbCommand(@"insert into dummy 
    		         (id, metin)
    				 values
    				 (@id, @metin)", con))
    		{
    			cmd.Parameters.Add("@id", OleDbType.Integer).Value = 1;
    			cmd.Parameters.Add("@metin", OleDbType.VarChar).Value = deneme;
    			cmd.ExecuteNonQuery();
    		}
    		using (OleDbCommand cmd = new OleDbCommand(@"select metin 
    		         from dummy 
    		         where id = @id", con))
    		{
    			cmd.Parameters.Add("@id", OleDbType.Integer).Value = 1;
    			var result = (string)cmd.ExecuteScalar();
    			Console.WriteLine($@"{result} = {deneme}, Ayni:{deneme == result}");
    		}
    		con.Close();
    	}
    }
    

    Sonuc:

    asd(asd))ad;da s.:d a s = asd(asd))ad;da s.:d a s, Ayni:True



    How to create a Minimal, Reproducible Example
    The way to Go.
    World's most advanced open source (object-) relational Database.
    Flutter (for mobile, for web & desktop.

    1 Ekim 2019 Salı 15:46
  • Kusura bakmayın ama kod okunmayacak kadar kotu. Yine de boş vaktim olursa projeye bakarim.


    How to create a Minimal, Reproducible Example
    The way to Go.
    World's most advanced open source (object-) relational Database.
    Flutter (for mobile, for web & desktop.

    1 Ekim 2019 Salı 20:56