Salve a tutti,
ho iniziato a prendere in considerazione il C# e Sql Server Express con Visual Studio.
Chiedo cortesemente supporto per validare le sintassi e l'approccio a tale linguaggio che ho iniziato a studiare da meno una settimana.
Lo scopo di questa App è quello di enumerare tutti i files presenti in una certa cartella e sottocartelle per memorizzare ogni elemento in una tabella di un database.
Per ogni file salvo un record con:
- DateOperation
- FullPath
- FileName
- DateLastEditFiles
Questo il codice su VindowsForm
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.IO;
using System.Data.SqlClient;
using System.Threading;
using static System.Windows.Forms.VisualStyles.VisualStyleElement;
namespace MyBackup65
{
// MAIN FORM CLASS
public partial class FormMain : Form
{
// connection string fon database table
string cnnString = @"data source=.\sqlexpress;initial catalog=MyBackup65;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"" providerName=""System.Data.SqlClient";
// MAIN FORM
public FormMain()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
MyReadFolderAndFile();
}
// READ FOLDER/FILES AND SAVE RECORDS IN THE BACKUP TABLE
private void MyReadFolderAndFile()
{
// init variables
string sqlString = "";
int result = 0;
int intCountFiles = 0;
textBoxFiles.Clear();
string strFullPathStart = @"C:\Document_\MyDownLoad\";
// set connection database string and open
using (SqlConnection connection = new SqlConnection(cnnString))
{
connection.Open();
// delete all records in the table
sqlString = "DELETE FROM Tbl_BkOperation";
using (SqlCommand command = new SqlCommand(sqlString, connection))
result = command.ExecuteNonQuery();
// set sql string
sqlString = "INSERT INTO Tbl_BkOperation (BkDateTimeBackup, BkFullPath, BkFileName, BkDateTimeEdit) VALUES(@value1, @value2, @value3, @value4)";
// set sql command and add parameters
using (SqlCommand command = new SqlCommand(sqlString, connection))
{
command.Parameters.AddWithValue("@value1", "");
command.Parameters.AddWithValue("@value2", "");
command.Parameters.AddWithValue("@value3", "");
command.Parameters.AddWithValue("@value4", "");
// get folder and file
string[] strFiles = Directory.GetFiles(strFullPathStart, "*", SearchOption.AllDirectories);
// set counter
intCountFiles = strFiles.Count();
// enum folder files
foreach (string strFile in strFiles)
{
// insert new record
command.Parameters["@value1"].Value = DateTime.Now;
command.Parameters["@value2"].Value = Path.GetFullPath(strFile);
command.Parameters["@value3"].Value = Path.GetFileName(strFile);
command.Parameters["@value4"].Value = File.GetLastWriteTime(strFile);
result = command.ExecuteNonQuery();
// textbox info update
textBoxFiles.AppendText(strFile + "\r\n");
}
}
// close connection
connection.Close();
}
MessageBox.Show("Completed... " + "Number Files: " + intCountFiles.ToString(), "Info", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
}
E' solo un approccio e mancano i dovuti controlli fondamentali sia per la connessione al Db se è andata a buon fine oppure no e così via dicendo per gli altri metodi che ho utilizzato.
Ma prima di andare avanti volevo confrontarmi con voi per capire se ho capito la sintassi del C#, i metodi, etc etc
Ad un occhio esperto in C# è sicuramente banale e lampante se ci ho capito qualcosa oppure no ;-)
Grazie in anticipo per le Critiche, Consigli e Dritte…. ma non mi distruggete, ho solo iniziato da pochi giorni, stò a studià ;-)