Benim yazdıklarınızdan çıkarttığım mantık bu şekilde
Sisteme giriş yapılırken CD key yoksa , tarihi geçmişse ve boşsa alınan hata
Hataya tamam dedikten sonra cd key girme ekranı.
Hatalı CD Key girişinde alınan hata
CD Keylerin tutulduğu tablo
Belirlediğimiz key numarasını programımıza giriyoruz ve doğru olduğunu belirtiyor Tamam butonuna basarak bizi Form2 ye yönlendiriyor.
Form 2
Veritabanında kullanıcımızın verileri 3 sütundan oluşuyor.
1-) ID
2-) Girdiği Serial Numarası
3-) Giriş yaptığı tarih (Otomatik alıyor ve cdkey tarihini geçtiği zaman hata veriyor.)
Artık kullanıcı verisi veritabanında kayıtlı olduğu için ekrana gelmeden form2 ye aktarım yapıyor.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.OleDb;
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
OleDbConnection con;
OleDbDataAdapter da;
OleDbCommand cmd;
DataSet ds;
string key;
string date;
public static string sonuc;
public void veritabani()
{
try
{
con = new OleDbConnection("Provider=Microsoft.ACE.Oledb.12.0;Data Source=cdkey.accdb");
con.Open();
//MessageBox.Show("Veritabanına bağlandınız");
}
catch (Exception e)
{
MessageBox.Show("Veritabanına bağlanırken hata oluştu" + e);
}
}
public void User()
{
OleDbCommand komut;
OleDbDataReader oku;
try
{
komut = new OleDbCommand();
komut.CommandText = "Select * from users where user_id =1";
komut.Connection = con;
oku = komut.ExecuteReader();
while (oku.Read())
{
key = oku[1].ToString();
date = oku[2].ToString();
}
}
catch (OleDbException ex)
{
MessageBox.Show(ex.Message);
}
}
public void Keys()
{
OleDbCommand komut;
OleDbDataReader oku;
try
{
komut = new OleDbCommand();
komut.CommandText = "Select count(*) from cdkeys where key_number = '"+key+"' and key_date > '"+date+"'";
komut.Connection = con;
oku = komut.ExecuteReader();
while (oku.Read())
{
sonuc = oku[0].ToString();
}
con.Close();
}
catch (OleDbException ex)
{
MessageBox.Show(ex.Message);
}
con.Close();
}
public void Kontrol()
{
if(sonuc == 1.ToString())
{
MessageBox.Show("Sisteme Kayitli");
Form2 form2 = new Form2();
form2.Show();
this.Size = new Size(0, 0);
Opacity = -999;
return;
}if(sonuc == 0.ToString())
{
MessageBox.Show("CD Key Süreniz Doldu ya da lisans key girmediniz.");
return;
}
}
public void Lisanskey()
{
cmd = new OleDbCommand();
//con.Open();
cmd.Connection = con;
cmd.CommandText = "update users set user_key='" + user_newkey + "', user_lasttime ='" + tumparcalar + "' where user_id= 1";
cmd.ExecuteNonQuery();
con.Close();
veritabani();
}
string tumparcalar;
string user_newkey;
private void Form1_Load(object sender, EventArgs e)
{
timer1.Start();
veritabani();
User();
Keys();
Kontrol();
string[] parcalar;
parcalar = label1.Text.Split('.');
tumparcalar = parcalar[2] + parcalar[1] + parcalar[0];
user_newkey = textBox1.Text;
}
private void button1_Click(object sender, EventArgs e)
{
veritabani();
string[] parcalar;
parcalar = label1.Text.Split('.');
tumparcalar = parcalar[2] + parcalar[1] + parcalar[0];
user_newkey = textBox1.Text;
Lisanskey();
User();
Keys();
Kontrol();
}
private void timer1_Tick(object sender, EventArgs e)
{
label1.Text = DateTime.Now.ToShortDateString();
}
}
}
[B]NOT: Kodları konuyu görünce yazdım basit mantığı budur geliştirilebilir.
Programın kodları ve veritabanı:
Tıkla ve İndir