У меня есть загрузчик файлов, который загружает файлы Excel в базу данных на сервере MySQL. Загрузчик файлов работает нормально, и я также сделал сетку, которая покажет историю всех загруженных файлов в разделе ниже.
Теперь я пытаюсь разработать некоторый код, который позволил бы загрузчику файлов проверятьбаза данных, когда в загруженном файле есть повторяющиеся строки, и спросите пользователя, не хочет ли он заменить старую запись на новую.
Примечание: дубликаты не равны на 100%. Например, в этой ситуации дубликат будет иметь тот же идентификатор, год и месяц, но разное значение. Другими словами, может быть только один идентификатор для определенного года и месяца, несмотря на значение.
Вот то, что я имею до сих пор. Помечен как комментарий код, где я не уверен, что делать, чтобы добиться того, что я упомянул.
protected void Button1_Click(object sender, EventArgs e)
{
String sID_VARIAVEL;
int sANO;
int sMES;
int sCOD_DATA;
String sINSTALACAO;
String sVALOR;
string path = Path.GetFileName(FileUpload1.FileName);
path = path.Replace(" ", "");
FileUpload1.SaveAs(Server.MapPath("~/Upload/") + path);
String ExcelPath = Server.MapPath("~/Upload/") + path;
OleDbConnection mycon = new OleDbConnection("Provider = Microsoft.ACE.OLEDB.12.0; Data Source = " + ExcelPath + "; Extended Properties=Excel 8.0; Persist Security Info = False");
mycon.Open();
OleDbCommand cmd = new OleDbCommand("select * from [Sheet1$]", mycon);
OleDbDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
sID_VARIAVEL = dr[0].ToString();
sANO = Convert.ToInt32(dr[1].ToString());
sMES = Convert.ToInt32(dr[2].ToString());
sCOD_DATA = Convert.ToInt32(dr[3].ToString());
sINSTALACAO = dr[4].ToString();
sVALOR = dr[5].ToString();
savedata(sID_VARIAVEL, sANO, sMES, sCOD_DATA, sINSTALACAO, sVALOR);
/*String query = "SELECT * FROM VALOR WHERE ID_VARIAVEL = '" + sID_VARIAVEL + "' AND ANO = '" + sANO + "' AND MES = '" + sMES + "' ";
Boolean parsedquery;
String myconn = "Data Source=agrsql004\\instance01; Initial Catalog=TrainingDB; User id=SQLLOCAL; Password=123456";
SqlConnection conn = new SqlConnection(myconn);
conn.Open();
SqlCommand command = new SqlCommand();
command.CommandText = query;
command.Connection = conn;
command.ExecuteNonQuery();
SqlDataReader reader = command.ExecuteReader();
if ()
{
DialogResult result = MessageBox.Show("????", "Confirmation", MessageBoxButtons.YesNoCancel);
}*/
}
DataTable dt = new DataTable();
dt.Columns.Add("File", typeof(string));
dt.Columns.Add("Size", typeof(string));
dt.Columns.Add("Type", typeof(string));
dt.Columns.Add("YourDateField", typeof(DateTime));
foreach (string strFile in Directory.GetFiles(Server.MapPath("~/Upload/")))
{
FileInfo fi = new FileInfo(strFile);
dt.Rows.Add(fi.Name, fi.Length, GetFileTypeByExtension(fi.Extension), fi.CreationTime);
}
GridView1.DataSource = dt;
GridView1.DataBind();
}
private void savedata(String sID_VARIAVEL1, int sANO1, int sMES1, int sCOD_DATA1, String sINSTALACAO1, String sVALOR1)
{
String query = "insert into VALOR (ID_VARIAVEL, ANO, MES, COD_DATA, INSTALACAO, VALOR) values('" + sID_VARIAVEL1 + "','" + sANO1 + "','" + sMES1 + "','" + sCOD_DATA1 + "','" + sINSTALACAO1 + "','" + sVALOR1 + "')";
String mycon = "Data Source=agrsql004\\instance01; Initial Catalog=TrainingDB; User id=SQLLOCAL; Password=123456";
SqlConnection con = new SqlConnection(mycon);
con.Open();
SqlCommand cmd = new SqlCommand();
cmd.CommandText = query;
cmd.Connection = con;
cmd.ExecuteNonQuery();
}