dustin poirier
Kilopat
- Katılım
- 12 Mayıs 2020
- Mesajlar
- 1.164
- Çözümler
- 6
Kodlar ve veri tabanındaki veriler bize vahiy olarak mı geliyor?
Entity veya direk connection ne kullanıyorsan işin bitince bağlantıyı kapatmalısın. Yoksa bağlantıyı açtığı halini çeker. Her işlem için bağlantı sağla ve ardından kapa. Yanlış hatırlamyorsam. Entity için Dispose(), connection string içinde Close() kullanılır. Eğer bunlar işe yaramaz ise projeni paylaşırsan daha detaylı incelerim.
string user = textBox3.Text;
string password = textBox4.Text;
con = new SqlConnection("Data Source=RB\\SQLEXPRESS;Initial Catalog=proje;Integrated Security=True");
com = new SqlCommand();
con.Open();
com.Connection = con;
com.CommandText = "Select*From Kullanıcı where kullanıcı_adi='" + textBox3.Text +
"'AND sifre='" + textBox4.Text + "'";
dr = com.ExecuteReader();
if (dr.Read())
{
MessageBox.Show("Tebrikler Giriş Başarılı");
anaSayfa gecis = new anaSayfa();
gecis.Show();
this.Hide();
}
else
{
MessageBox.Show("Hatalı Kullanıcı Adı veya şifre");
}
con.Close();
}
Yani şu an öyle geliyor. Veri tabanımda sadece 1 kulalnıcı adı şifre var ve onu kabul etmiyor.
static SqlConnection con;
static SqlDataAdapter da;
static SqlDataReader dr;
static SqlCommand cmd;
static System.Data.DataSet ds;
public static string sqlCon = "Data Source=RB\\SQLEXPRESS;Initial Catalog=proje;Integrated Security=True;
public static bool login(string kid, string pass)
{
string sorgu = "Select * From Kullanıcı where kullanıcı_adi=@user AND sifre=@pass";
con = new SqlConnection(sqlCon);
cmd = new SqlCommand(sorgu, con);
cmd.Parameters.AddWithValue("@user", kid);
cmd.Parameters.AddWithValue("@pass", pass);
con.Open();
dr = cmd.ExecuteReader();
if (dr.Read())
{
con.Close();
return true;
}
else
{
con.Close();
return false;
}
}
Dostum kodları ve veritabanını görmeden yardımcı olmak zor anlamında söyledim. Kodları ve veritabanında ki verileri paylaşmazsan çözüm bulamazsın.
Öncelikle Textbox'a girilen değerleri değişkene alıp, neden o değişkenleri kullanmadın merak ettim.
Veritabanında ki kullanıcılar tablosuna select atıp dönen sonuç tablosunun görüntüsünüde atar mısın?
4 z z
5 z z3
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using static System.Windows.Forms.VisualStyles.VisualStyleElement;
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//Kullanmak istediğin event
private void Form1_Load(object sender, EventArgs e)
{
//Metodu çağırdığın yer
Login(textBox3.Text, textBox4.Text);
}
public void Login(string userName, string password)
{
SqlConnection cnn = new SqlConnection("Data Source=RB\\SQLEXPRESS;Initial Catalog=proje;Integrated Security=True");
SqlCommand cmd = new SqlCommand("SELECT COUNT(*) FROM Kullanıcı WHERE kullanıcı_adi = @userName AND sifre = @password", cnn);
cmd.Parameters.AddWithValue("@userName", userName);
cmd.Parameters.AddWithValue("@password", password);
cnn.Open();
if (cnn.State == ConnectionState.Closed)
{
cnn.Open();
}
bool hasRow = Convert.ToInt32(cmd.ExecuteScalar()) > 0;
if (hasRow)
{
MessageBox.Show("Tebrikler Giriş Başarılı");
anaSayfa gecis = new anaSayfa();
gecis.Show();
this.Hide();
}
else
{
MessageBox.Show("Hatalı Kullanıcı Adı veya şifre");
}
cnn.Close();
}
}
}
2 güne göre hızlı ilerlemişsin. Hızlı koşan atın, damlaya damlaya göl olur. Neyse soruna odaklanalım.
Textbox'dan girdiğin değerler ne tam olarak? (attığın sorgu sonucuna göre 2 satır kayıt dönmüş. Büyük ihtimal kaydı silememişsin. Bir de result Set'i resim olarak atarsan daha iyi olur.)
Koda gelirsek;
Aşağıdaki kod daha sağlıklı çalışacaktır. Sen kendine göre düzeltirsin. Fiddler üzerinden yazdığım için tam testini yapamadım. Veritabanındaki kullanıcı adı ve şifre eşleştiğinde giriş yapacaktır.
C#:using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Data.SqlClient; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using static System.Windows.Forms.VisualStyles.VisualStyleElement; namespace WindowsFormsApp1. { public partial class Form1 : Form. { public Form1() { InitializeComponent(); } //Kullanmak istediğin event. private void Form1_Load(object sender, EventArgs e) { //Metodu çağırdığın yer. Login(textBox3.Text, textBox4.Text); } public void Login(string userName, string password) { SqlConnection cnn = new SqlConnection("Data Source=RB\\SQLEXPRESS;Initial Catalog=proje;Integrated Security=True"); SqlCommand cmd = new SqlCommand("SELECT COUNT(*) FROM Kullanıcı WHERE kullanıcı_adi = @userName AND sifre = @password", cnn); cmd.Parameters.AddWithValue("@userName", userName); cmd.Parameters.AddWithValue("@password", password); cnn.Open(); if (cnn.State == ConnectionState.Closed) { cnn.Open(); } bool hasRow = Convert.ToInt32(cmd.ExecuteScalar()) > 0; if (hasRow) { MessageBox.Show("Tebrikler Giriş Başarılı"); anaSayfa gecis = new anaSayfa(); gecis.Show(); this.Hide(); } else. { MessageBox.Show("Hatalı Kullanıcı Adı veya şifre"); } cnn.Close(); } } }
Zibilyon tane hata verdi. Bunu düzeltiyim derken de yaptığım yeri bozacaktım az kalsın. Gerçekten bu kadar zor olmamalı ya. Bunu yaptıktan sonra kayıt ekleme bölmünü de yapmam gerekecek onda kim bilir ne kadar uğraşacağım. Kötü olan kısım ise yarın 23:59'a kadar sürem var.
SqlConnection cnn = new SqlConnection("Data Source=RB\\SQLEXPRESS;Initial Catalog=proje;Integrated Security=True");
SqlCommand cmd = new SqlCommand("SELECT COUNT(*) FROM Kullanıcı WHERE kullanıcı_adi = @userName AND sifre = @password", cnn);
cmd.Parameters.AddWithValue("@userName", userName);
cmd.Parameters.AddWithValue("@password", password);
cnn.Open();
if (cnn.State == ConnectionState.Closed)
{
cnn.Open();
}
bool hasRow = Convert.ToInt32(cmd.ExecuteScalar()) > 0;
if (hasRow)
{
MessageBox.Show("Tebrikler Giriş Başarılı");
anaSayfa gecis = new anaSayfa();
gecis.Show();
this.Hide();
}
else.
{
MessageBox.Show("Hatalı Kullanıcı Adı veya şifre");
}
cnn.Close();