Laden...

Firebird Fehlermeldung

Erstellt von pmSyS vor 17 Jahren Letzter Beitrag vor 17 Jahren 2.367 Views
P
pmSyS Themenstarter:in
65 Beiträge seit 2006
vor 17 Jahren
Firebird Fehlermeldung

Mahlzeit Leute,

Ich bin jetzt fertig mit meiner Programm und muss feststellen, dass Firebird mir eine Fehlermeldung gibt, mit der ich nicht viel anfangen kann. (Siehe Bild)

Was ist da schiefgelaufen?
Ich hab zum Schluss nur noch ein Konsolen-Prog. geschrieben, das die DB-Datei schrumpft (Backup/Restore), da ich es als Embedded einsetze.
Seitdem ich das Prog. mal ausgeführt habe, will mein Hauptprog nicht mehr...
Hab auch versucht, die DB komplett neu aufzubauen mit FlameRobin, aber das hat auch nix genüzt.
Gestern hat es noch funktioniert und ich habe seitdem nichts mehr am Hauptprogramm gemacht, ausser das MainMenu ein bisschen anzupassen.

Hilfee!!

347 Beiträge seit 2006
vor 17 Jahren

Wir sollen jetzt sicherlich deinen Source code aus unserer Bluetooth Kristallkugel[1] zaubern, right?

[1]die ist übrigens echt klasse, markiert auch gleich alle Stellen in den Saucen, wo es bei dir knallt. 🙄

P
pmSyS Themenstarter:in
65 Beiträge seit 2006
vor 17 Jahren

Ich glaube nicht, dass der Source dir hilft, da es ja funktioniert hat, und ich an den Stellen nichts verändert habe...


private void speichern()
		{
			try
			{
				this.oleDbConnection1.Open();
				trans = this.oleDbConnection1.BeginTransaction();

				using(FbCommand delCMD = new FbCommand("DELETE FROM header;", this.oleDbConnection1))
				{
					delCMD.Transaction = trans;
					delCMD.ExecuteNonQuery();
					delCMD.CommandText = "DELETE FROM pruefung;";
					delCMD.ExecuteNonQuery();
					delCMD.CommandText = "DELETE FROM kommentar;";
					delCMD.ExecuteNonQuery();
					delCMD.CommandText = "DELETE FROM fehler;";
					delCMD.ExecuteNonQuery();		
					trans.Commit();
				}

				trans = this.oleDbConnection1.BeginTransaction();

				this.oleDbInsertCommand1.Transaction = trans;
				this.oleDbInsertCommand2.Transaction = trans;
				this.oleDbInsertCommand3.Transaction = trans;
				this.oleDbInsertCommand4.Transaction = trans;
				this.oleDbInsertCommand5.Transaction = trans;

				this.oleDbUpdateCommand3.Transaction = trans;
				this.oleDbUpdateCommand4.Transaction = trans;

				this.statusPanel1.Text = "Speichere Header-Daten";
//				for(int i=0; i<datas.Tables["header"].Rows.Count; i++)
//				{
//					Console.WriteLine(datas.Tables["header"].Rows[i][0] + ";" + datas.Tables["header"].Rows[i][1] + ";" +datas.Tables["header"].Rows[i][2] + ";" + datas.Tables["header"].Rows[i][3] + ";" +datas.Tables["header"].Rows[i][4] + ";");
//				}
				this.dbHeader.Update(datas.Tables["header"]);  //Da "knallts"
				this.statusPanel1.Text = "Speichere Prüfung-Daten";
				this.dbPruefung.Update(datas.Tables["pruefung"]);
				this.statusPanel1.Text = "Speichere Kommentar-Daten";
				this.dbKommentar.Update(datas.Tables["kommentar"]);
				this.statusPanel1.Text = "Speichere Fehler-Daten";
				this.dbFehler.Update(datas.Tables["fehler"]);
				this.statusPanel1.Text = "Bereit";

				trans.Commit();
			}
			catch(Exception e)
			{
				MessageBox.Show(e.Message,"Fehler!",System.Windows.Forms.MessageBoxButtons.OK,System.Windows.Forms.MessageBoxIcon.Error);
			}
			finally
			{
				this.oleDbConnection1.Close();
			}
		}

Der header sieht so aus:


header.Columns.Add("IDvon",System.Type.GetType("System.Int64"));
			header.Columns.Add("IDbis",System.Type.GetType("System.Int64"));
			header.Columns.Add("DatumVon",System.Type.GetType("System.String"));
			header.Columns.Add("DatumBis",System.Type.GetType("System.String"));
			header.Columns.Add("Linie",System.Type.GetType("System.String"));

Connection String:


FbConnectionStringBuilder conStr = new FbConnectionStringBuilder();
				conStr.Database = @".\temp.fdb";		
				conStr.UserID = "xxx";
				conStr.Password = "xxx";
				conStr.Dialect = 3;
				conStr.ServerType = 1;
				this.oleDbConnection1.ConnectionString = conStr.ToString();

und hier noch die FBConnection-Einstellung:


// 
			// dbHeader
			// 
			this.dbHeader.InsertCommand = this.oleDbInsertCommand1;
			this.dbHeader.SelectCommand = this.oleDbSelectCommand1;
			this.dbHeader.TableMappings.AddRange(new System.Data.Common.DataTableMapping[] {
																							   new System.Data.Common.DataTableMapping("Table", "Header", new System.Data.Common.DataColumnMapping[] {
																																																		 new System.Data.Common.DataColumnMapping("DatumBis", "DatumBis"),
																																																		 new System.Data.Common.DataColumnMapping("DatumVon", "DatumVon"),
																																																		 new System.Data.Common.DataColumnMapping("IDbis", "IDbis"),
																																																		 new System.Data.Common.DataColumnMapping("IDvon", "IDvon"),
																																																		 new System.Data.Common.DataColumnMapping("Linie", "Linie")})});
			

906 Beiträge seit 2005
vor 17 Jahren

8o du nimmst für eine FB-DB eine OLEDBConnection? Das geht doch nicht.

Nimm mal den FB Provider ⚠

P
pmSyS Themenstarter:in
65 Beiträge seit 2006
vor 17 Jahren

Ich hatte vorher eine OleDb-Verbindung zu Access.
Ich hab alles bis auf die Namen der Variablen geändert.
Es hat ja funktioniert mit FB.

Am Montag mache ich nochmal Fehlersuche, da der Fehler ja irgendwo zwischen Prog. und DB liegen muss.
Denn wenn ich den normalen FB-Server benutze, dann habe ich keine Probleme über FlameRobin Daten in die DB einzufügen.
Ich versuch mal im Prog. auf den normalen Server umzustellen; mal sehen, ob es dann funzt.

365 Beiträge seit 2004
vor 17 Jahren

Welche Firebird Version benutzt du? Die 2.0er Version oder die 1.5er? Ich hatte genau das gleiche Probleme als ich meine DB mit 2.0 aufgebaut hatte und das ganze dann als Embedded nutzen wollte. Als Super/Classic Server lief alles und als Embedded eben nicht. Ich bin jetzt erstmal wieder auf die 1.5er Version ausgewichen und damit läuft es auch als Embedded problemlos.

Gruß

Christoph

P
pmSyS Themenstarter:in
65 Beiträge seit 2006
vor 17 Jahren

Ich hab die v1.5.
Es hat ja mal funktioniert. Ich werd jetzt mal auf Fehlersuche gehen, denn es kann eigentlich nur eine Kleinigkeit sein, die dazu führte.

P
pmSyS Themenstarter:in
65 Beiträge seit 2006
vor 17 Jahren

Ha!

Ich hab den Fehler gefunden.
Aus mir nicht ersichtlichen Gründen hat VS die Parameterzuordnung der Insert, Update... Commands gelöscht.

Das war einfach bei allen DataAdaptern weg:


this.oleDbUpdateCommand3.Parameters.Add(new FbParameter("ID", FbDbType.BigInt, 0, "ID"));

Gruß
pmSyS