ardasipahi01
New member
- Joined
- Jul 18, 2023
- Messages
- 4
- Programming Experience
- 1-3
Hello;
I pull the data from Excel and save it to the database with the record button.
But if the data from excel is in the residential database, I want it to give a warning.
I was able to do it on the form, but when it came to pulling from excel, I couldn't. Can you help me please. No matter what I do, I get the message I HAVE THE SAME "This data already exists".
When I set the status to false on btnInsertAndShow_Click, it records normally.
I asked Uncle ChatGpt and he gave me an example, but I could not adapt it to the codes.
Codes that artificial intelligence gave me. But I couldn't adapt it to my project.
I pull the data from Excel and save it to the database with the record button.
But if the data from excel is in the residential database, I want it to give a warning.
I was able to do it on the form, but when it came to pulling from excel, I couldn't. Can you help me please. No matter what I do, I get the message I HAVE THE SAME "This data already exists".
When I set the status to false on btnInsertAndShow_Click, it records normally.
I asked Uncle ChatGpt and he gave me an example, but I could not adapt it to the codes.
C#:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.OleDb;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SQLite;
using SpreadsheetLight;
using System.IO;
using System.Globalization; //büyük harf keydetmek için gerekli
namespace excel
{
public partial class odaaktar : Form
{
List<Model.oda> excelData = new List<Model.oda>();
public odaaktar()
{
InitializeComponent();
}
SQLiteConnection baglanti;
bool durum;
void mukerrer()
{
baglanti = new SQLiteConnection("Data Source = dbDENEME.db");
SQLiteCommand kom = new SQLiteCommand("select * from oda where meskenno=@meskenno", baglanti);
kom.Parameters.AddWithValue("@meskenno", grdMakale.Columns[2].HeaderText);
baglanti.Open();
SQLiteDataReader dr = kom.ExecuteReader();
if (dr.Read())
{
durum = false;
}
else
{
durum = true;
}
baglanti.Close();
}
public List<Model.oda> MakeleExcelYukle()
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "Excel Dosyası .xlsx |*.xlsx| Excel Dosyası .xls |*.xls";
ofd.ShowDialog();
string file = ofd.FileName;
using (SLDocument sl = new SLDocument())
{
if (string.IsNullOrEmpty(ofd.FileName))
{
MessageBox.Show(this, "DOSYA SEÇMEDİNİZ. İşlem İptal Edildi..", "Sistem Mesajı", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
else
{
FileStream fs = new FileStream(file, FileMode.Open);
SLDocument sheet = new SLDocument(fs, "Table 1"); // Excelde 'Table 1' yoksa ilk bulduğu tablodan başlar
SLWorksheetStatistics stats = sheet.GetWorksheetStatistics();
try
{
// başlıkları atlamak için 2.rowdan başlıyor
for (int j = 2; j <= stats.EndRowIndex; j++)
{
Model.oda mk = new Model.oda();
mk.adisoyadi = sheet.GetCellValueAsString(j, 1);
mk.meskenno = sheet.GetCellValueAsInt64(j, 2);
mk.projeno = sheet.GetCellValueAsInt64(j, 3);
mk.sinifi = sheet.GetCellValueAsInt64(j, 4);
mk.takisi = sheet.GetCellValueAsString(j, 5);
excelData.Add(mk);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
return excelData;
}
}
public void GridUploadDataGoster(List<Model.oda> makaleData)
{
grdMakale.DataSource = makaleData;
}
public void EkleVeGoster(List<Model.oda> makaleData)
{
foreach (var mk in makaleData)
{
SQLiteHelper.ExecQuery($@"INSERT INTO [oda]
([adisoyadi]
,[meskenno]
,[projeno]
,[sinifi]
,[takisi])
VALUES
({"\"" + mk.adisoyadi.ToUpper(new CultureInfo("tr-TR", false)) + "\""}
,{ "\"" + mk.meskenno + "\""}
,{ "\"" + mk.projeno + "\""}
,{ "\"" + mk.sinifi + "\""}
,{ "\"" + mk.takisi.ToUpper(new CultureInfo("tr-TR", false)) + "\""});
"); // int big int gibi sayısal değerler tırnak olmadan eklenir.
}
grdMakale.DataSource = SQLiteHelper.SelectQuery("select * from oda");
}
private void btnGoster_Click(object sender, EventArgs e)
{
MessageBox.Show("İşlem, seçilecek dosyanın büyüklüğüne göre uzun sürebilir. Lütfen tamamlanana kadar bekleyin." + "\n" + "\n" + "Örnek EXCEL ŞABLONUNA göre bir dosya seçmeniz gerektiğini unutmayınız.", "Yüklemeden Önce Duyuru..!", MessageBoxButtons.OK, MessageBoxIcon.Information);
var excelData = MakeleExcelYukle();
GridUploadDataGoster(excelData);
grdMakale.Columns[0].Visible = false;
grdMakale.Columns[0].HeaderText = "ID";
grdMakale.Columns[1].HeaderText = "ADI SOYADI";
grdMakale.Columns[2].HeaderText = "MESKEN NO";
grdMakale.Columns[3].HeaderText = "PROJE NO";
grdMakale.Columns[4].HeaderText = "SINIFI";
grdMakale.Columns[5].HeaderText = "TAKISI";
btnGoster.Enabled = false;
btnInsertAndShow.Enabled = true;
}
private void btnInsertAndShow_Click(object sender, EventArgs e)
{
if (durum == true)
{
MessageBox.Show("Kaydetme işlemi yüklenecek verinin büyüklüğüne göre uzun sürebilir." + "\n" + "\n" + "Lütfen işlem tamamlandı mesajına kadar bekleyiniz.", "İşlem Sonucu", MessageBoxButtons.OK, MessageBoxIcon.Warning);
EkleVeGoster(excelData);
btnInsertAndShow.Enabled = false;
MessageBox.Show("İŞLEM TAMAMLANDI.", "Excel Aktarma İşlemi", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
MessageBox.Show("AYNISINDAN VAR / This data already exists", "Duyuru..!", MessageBoxButtons.OK, MessageBoxIcon.Information);
//this.Close();
}
}
}
}
Codes that artificial intelligence gave me. But I couldn't adapt it to my project.
C#:
// DataGridView'deki verileri veritabanına kaydetme işlemi
private void KaydetButton_Click(object sender, EventArgs e)
{
// Veritabanı bağlantısı ve komut oluşturma
using (SqlConnection connection = new SqlConnection("veritabanı-bağlantı-dizesi"))
{
connection.Open();
foreach (DataGridViewRow row in dataGridView1.Rows)
{
// DataGridView'deki her bir satır için veri kontrolü
string veri = row.Cells["KolonAdi"].Value.ToString(); // KolonAdi, DataGridView'deki ilgili kolon adını temsil eder
// Veritabanında aynı verinin varlığını kontrol etme
string query = "SELECT COUNT(*) FROM TabloAdi WHERE KolonAdi = @Veri";
SqlCommand command = new SqlCommand(query, connection);
command.Parameters.AddWithValue("@Veri", veri);
int count = (int)command.ExecuteScalar();
// Eğer veri veritabanında bulunuyorsa uyarı verme
if (count > 0)
{
MessageBox.Show("Bu veri zaten veritabanında mevcut: " + veri);
}
else
{
// Veriyi veritabanına ekleme işlemi
query = "INSERT INTO TabloAdi (KolonAdi) VALUES (@Veri)";
command = new SqlCommand(query, connection);
command.Parameters.AddWithValue("@Veri", veri);
command.ExecuteNonQuery();
}
}
connection.Close();
}
}