07. december 2005 - 16:31Der er
21 kommentarer og 2 løsninger
SQL, OleDb og Update
hej,
Jeg skal læse noget data fra en tabel og når jeg har læst en record/linie færdig skal jeg update et felt i den pågælende record/tuble (kært barn har mange navne), før jeg læser den næste record.
Lidt kode
OleDbCommand dbCmd = new OleDbCommand("SELECT * FROM tblConfirmRecordings WHERE Completed = 0", dbConn); OleDbDataReader dbReader = dbCmd.ExecuteReader();
while (dbReader.Read()) { CopyTheWav(dbReader["SourceFilePath"].ToString(), dbReader["NewFilePath"].ToString(), (int)dbReader["StartTime"], (int)dbReader["StopTime"]); OleDbCommand dbUpdate = new OleDbCommand("UPDATE tblConfirmRecordings SET Completed = 1 WHERE Completed = 0", dbConn); dbUpdate.ExecuteNonQuery(); }
Den moderne arbejdsplads er i stigende grad afhængig af mødelokaler til at fremme samarbejde, men dette skift medfører også stigende sikkerhedsudfordringer.
OleDbCommand dbCmd = new OleDbCommand("SELECT * FROM tblConfirmRecordings WHERE Completed = 0", dbConn); OleDbDataReader dbReader = dbCmd.ExecuteReader();
while (dbReader.Read()) { CopyTheWav(dbReader["SourceFilePath"].ToString(), dbReader["NewFilePath"].ToString(), (int)dbReader["StartTime"], (int)dbReader["StopTime"]); OleDbCommand dbUpdate = new OleDbCommand("UPDATE tblConfirmRecordings SET Completed = 1 WHERE Completed = 0 AND SourceFilePath="+dbReader["SourceFilePath"].ToString()+" AND NewFilePath="+dbReader["NewFilePath"].ToString()+" AND StartTime="+dbReader["StartTime"].ToString()+" AND StopTime="+dbReader["StopTime"].ToString()+"", dbConn); dbUpdate.ExecuteNonQuery(); }
Den update sætning jeg har lavet går ind og finder en række hvor de 4 felter værdier passer og sætter completed til 1. Men det ville være noget kønnere hvis du havde et ID på feltet.
den jeg har arbejdede på samtidig :) udfører først det du vil have på dem der ikke er complete hvorefter den updater alle dem der ikke er complete.. simpelt
denne her burde virke: while (dbReader.Read()) { /*CopyTheWav(dbReader["SourceFilePath"].ToString(), dbReader["NewFilePath"].ToString(), (int)dbReader["StartTime"], (int)dbReader["StopTime"]);*/ OleDbConnection dbConn1 = new OleDbConnection(connectionString); dbConn1.Open(); OleDbCommand dbUpdate = new OleDbCommand("UPDATE tblConfirmRecordings SET Completed = 1 WHERE Completed = 0 AND SourceFilePath="+dbReader["SourceFilePath"].ToString()+" AND NewFilePath="+dbReader["NewFilePath"].ToString()+" AND StartTime="+dbReader["StartTime"].ToString()+" AND StopTime="+dbReader["StopTime"].ToString()+"", dbConn1); dbUpdate.ExecuteNonQuery(); dbConn1.Close(); }
en anden mulighed kunne være at bruge et dataset på denne måde: string connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=STI TIL DB"; OleDbConnection dbConn = new OleDbConnection(connectionString); OleDbDataAdapter oda = new OleDbDataAdapter("SELECT * FROM tblConfirmRecordings WHERE Completed = 0", dbConn); DataSet ds = new DataSet(); oda.Fill(ds); foreach (DataRow dr in ds.Tables[0].Rows) { CopyTheWav(dr["SourceFilePath"].ToString(), dr["NewFilePath"].ToString(), (int)dr["StartTime"], (int)dr["StopTime"]); dbConn.Open(); OleDbCommand dbUpdate = new OleDbCommand("UPDATE tblConfirmRecordings SET Completed = 1 WHERE Completed = 0 AND SourceFilePath=" + dr["SourceFilePath"].ToString() + " AND NewFilePath=" + dr["NewFilePath"].ToString() + " AND StartTime=" + dr["StartTime"].ToString() + " AND StopTime=" + dr["StopTime"].ToString() + "", dbConn); dbUpdate.ExecuteNonQuery(); dbConn.Close(); }
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.