public int InsertScan(EntScan scan) { int retScanID = -1; try { using (DbTransaction transaction = Connection.BeginTransaction()) { using (SqlCeCommand command = Connection.CreateCommand()) { command.CommandText = @" INSERT INTO Scan (MachineID, ScanDate) VALUES (?, ?);"; command.Parameters.Add(new SqlCeParameter("MachineID", SqlDbType.Int, 4)).Value = scan.MachineID; command.Parameters.Add(new SqlCeParameter("ScanDate", SqlDbType.DateTime)).Value = DateTime.Now; command.ExecuteNonQuery(); command.CommandText = @"select @@identity "; retScanID = Convert.ToInt32(command.ExecuteScalar()); } transaction.Commit(); } } catch (Exception) { retScanID = -1; } return retScanID; }
private EntScan DataReaderToObject(SqlCeDataReader reader) { EntScan scan = new EntScan(); scan.MachineID = reader.GetInt32(reader.GetOrdinal("MachineID")); scan.ScanID = reader.GetInt32(reader.GetOrdinal("ScanID")); scan.Date = reader.GetDateTime(reader.GetOrdinal("ScanDate")); return scan; }
/// <summary> /// Thread function to collect wmi data /// </summary> /// <param name="param">receives the machine name or ip for data collecton</param> private void CollectWMIData(object param) { string hostname = (string)param; _logger.Info("wmi data collection started for machine " +hostname); DiscoverDb _disDb = new DiscoverDb(); EntDiscover machinedetails = _disDb.GetMachineDetails(hostname); CredentialDB _credDb = new CredentialDB(); EntCredential _cred = _credDb.GetCredential(machinedetails.CredentialID); _credDb.CloseConnection(); _credDb = null; string _UserName = null; string _Password = null; if ( _cred != null) { _UserName = _cred.Username; _Password = _cred.Password; } FireStatusMessage(NAMString.ResourceFormatter.CONTROLLER_STATUS_MESSAGE_WMICOLLECT()+" "+hostname); WMIHandler objHandler = new WMIHandler(machinedetails.MachineName, _UserName, _Password); EntScan scan = new EntScan(); if ( objHandler.IsWmiInitialized == true ) { scan.MachineID = machinedetails.MachineID; ScanDb _scandb = new ScanDb(); int scanID = _scandb.InsertScan(scan); _scandb.CloseConnection(); _scandb = null; EntityDb entityDb = new EntityDb(); FireStatusMessage(hostname+" : "+ NAMString.ResourceFormatter.CONTROLLER_STATUS_MESSAGE_PROCESSOR()); foreach (EntProcessor pro in objHandler.GetProcessorDetails()) { pro.ScanID = scanID; //procDb.InsertProcessor(pro); entityDb.Insert(pro); } foreach (EntSoftwares lSoftware in objHandler.GetInstalledSoftwareDetails()) { lSoftware.ScanID = scanID; entityDb.Insert(lSoftware); } entityDb.CloseConnection(); entityDb = null; _disDb.UpdateLastScan(scan.MachineID, scan.Date); machinedetails.Discovered = true; machinedetails.StatusMessage = NAMString.ResourceFormatter.CONTROLLER_STATUS_MESSAGE_SCANCOMPLETE(); } else { _logger.Error("WMI not initialized for machine <" + hostname+">"); machinedetails.StatusMessage = "wmi initialization failure"; machinedetails.Discovered = false; } machinedetails.LastChecked = DateTime.Now; _disDb.UpdateDiscover(machinedetails); if ( ScanComplete!=null) { ScanComplete(this, machinedetails.MachineName); } FireStatusMessage("Scan complete"); _disDb.CloseConnection(); _disDb = null; }