Laden...

Direkte SQL-Anweisung in C# absetzen, sind Daten angekommen?

Erstellt von oehrle vor 14 Jahren Letzter Beitrag vor 14 Jahren 1.053 Views
O
oehrle Themenstarter:in
461 Beiträge seit 2009
vor 14 Jahren
Direkte SQL-Anweisung in C# absetzen, sind Daten angekommen?

Hallo,

ich setzte in C# eine MEldung ab, sobald in der Oberfläche ein Artikel ausgedruckt wird. Diese Meldung beinhaltet den Artikel, die Uhrzeit und das Datum, wann gedruckt wurde. Ich setzte diese Meldung in C# über eine SQLTransaction ab. Nun hat meine Anwendung auch ein User in China. Jetzt habe ich bemerkt das sein Eintrag in die Datenbank gar nicht immer stattfindet und irgenwo ins leere läuft. Ich arbeite aus diesem Grund auch nicht bei den Meldungen mit einem DataSet, damit die Meldung "Live" in meine Kontrolltabelle eingetragen wird.

Nun meine grundsaätzlichen Fragen: Wenn ich eine SQLTransaction ausführe, kann ich sicher sein das die auch ankommen muß, auch wenn diese durch eine Firewall gesperrt werden würde? Wäre das so (was ich nicht genau weiß), dann könnt eich das Programm abbrechen, der User wäre gezwungen die Firewall zu öffnen um den Meldungseintrag zu ermöglichen.
Habe ich eine relativ einfache Möglichkeit zu prüfen, ob der Meldeeintrag durchgegangen ist? Kann das sein, das das Timeout der Verbindung erhöht weren muß?

Ich habe den Meldeeintrag nachfolgend beigefügt:


string strSQL = "INSERT INTO Kontrolltabelle (ID, USERNAME, MACHINENAME, LEVEL, DATE, TIME, PU, HARDCOPY) VALUES ("
				+ "'" + id + "'" + ", '" + userName + "', '" + machineName + "', '" + level + "', '" + date + " ', '" + time + "', '" + pu + "', '" + "PRINT" + "')";


			SqlTransaction trans;
			SqlConnection conn = new SqlConnection(verbindung);


			try
			{
				conn.Open();
				trans = conn.BeginTransaction();
				try
				{
					SqlCommand cmd = new SqlCommand(strSQL, conn);
					cmd.Transaction = trans;
					cmd.CommandText = strSQL;
					cmd.ExecuteNonQuery();
					trans.Commit();
				}
				catch (Exception e)
				{
					trans.Rollback();
					MessageBox.Show(e.Message, "Error  -->  Try again");
				}

			}
			catch (Exception ex)
			{
				MessageBox.Show(ex.Message, "Error");
			}
			conn.Close();

Gelöschter Account
vor 14 Jahren

wenn eine firewall blockiert, dann kommt eine exception. wenn der insert korrekt ausgeführt wurde, dann sollte executenonquery einen wert zurückgeben. im falle vom insert muss er bei erfolg oder rollback größer 0 sein.

3.825 Beiträge seit 2006
vor 14 Jahren

Hallo,

  • date + " ', '" + time + "',

Ganz schlecht !

Lies bitte die FAQ zu Parametern und baue Dein Programm um.

Hat Dein Anwender in China ein deutsches Windows mit deutscher Ländereinstellung ?

Grüße Bernd

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3