Einen schönen guten Abend allerseits! Ich habe folgende Exceptionmeldung, wenn ich SqlDataAdapter.Update aufrufe und kann absolut nichts damit anfangen! Ich habe sämtliche Parameter des SqlDataAdapters mit den zugehörigen Spalten in der DataTable verglichen und es ist bestimmt nirgends eine solche Konvertierung erforderlich!
Bin bereits mehr als eine Stunde versucht, das Problem zu lokalisieren, jedoch ohne Erfolg!
Lg Ishildur
Liegt es vielleicht daran, dass ein Datenbankfeld am SQL Server als GUID definiert ist und daher beim Auslesen von Daten aus deinem DataReader diese Meldung bekommst?
.NET GUI - Die Community für grafische Oberflächen unter .NET
Jetzt kostenlos besorgen: .NET BlogBook
Norbert Eder
DasBackup
@nitronic
Nein, der Fehler passiert, wenn ich die Update Methode des entsprechenden Adapters aufrufe. Da die Daten ja scheinbar ordnungsgemäss von den Controls via Databindings in die DataTable gelangte, muss der Fehler ja daran liegen, dass in der DataTable und den Parameter des Insert - Commands des DataAdapter unterschiedliche Typen definiert sind. Ich habe diese aber tausendmal geprüft:
Der Insert - Command des Personenadapters
// create and assign the insert - command
strCmd = "INSERT INTO Person(Person_ID,Country_ID,Nationality_ID,Title,PersonalName,";
strCmd += "FamilyName,Birthdate,Civilstate,Profession,AHV,Adress,Zip,Place,Postcase,";
strCmd += "Description,Picture,News,Inserted,Locked) VALUES(@Person_ID,@Country_ID,";
strCmd += "@Nationality_ID,@Title,@PersonalName,@FamilyName,@Birthdate,@Civilstate,";
strCmd += "@Profession,@AHV,@Adress,@Zip,@Place,@Postcase,@Description,@Picture,@News,";
strCmd += "GETDATE(),0)";
sqlCmd = new SqlCommand(strCmd,this.Connection);
sqlCmd.Parameters.Add("Person_ID",SqlDbType.UniqueIdentifier,0,"Person_ID");
sqlCmd.Parameters.Add("Country_ID",SqlDbType.UniqueIdentifier,0,"Country_ID");
sqlCmd.Parameters.Add("Nationality_ID",SqlDbType.UniqueIdentifier,0,"Nationality_ID");
sqlCmd.Parameters.Add("Title",SqlDbType.TinyInt,0,"Title");
sqlCmd.Parameters.Add("PersonalName",SqlDbType.VarChar,20,"PersonalName");
sqlCmd.Parameters.Add("FamilyName",SqlDbType.VarChar,20,"FamilyName");
sqlCmd.Parameters.Add("Birthdate",SqlDbType.DateTime,0,"Birthdate");
sqlCmd.Parameters.Add("Civilstate",SqlDbType.TinyInt,0,"Civilstate");
sqlCmd.Parameters.Add("Profession",SqlDbType.VarChar,50,"Country_ID");
sqlCmd.Parameters.Add("AHV",SqlDbType.VarChar,20,"AHV");
sqlCmd.Parameters.Add("Adress",SqlDbType.VarChar,50,"Adress");
sqlCmd.Parameters.Add("Zip",SqlDbType.VarChar,10,"Zip");
sqlCmd.Parameters.Add("Place",SqlDbType.VarChar,50,"Place");
sqlCmd.Parameters.Add("Postcase",SqlDbType.VarChar,50,"Postcase");
sqlCmd.Parameters.Add("Description",SqlDbType.Text,0,"Description");
sqlCmd.Parameters.Add("Picture",SqlDbType.Image,50,"Picture");
sqlCmd.Parameters.Add("News",SqlDbType.Bit,0,"News");
this.sqlAdpPrs.InsertCommand = sqlCmd;
Die Personentabelle
// create and setup the person - table
this.dtaTblPrs = this.DataSet.Tables.Add("Person");
this.dtaTblPrs.Columns.Add("Person_ID",typeof(Guid));
this.dtaTblPrs.Columns.Add("Country_ID",typeof(Guid));
this.dtaTblPrs.Columns.Add("Nationality_ID",typeof(Guid));
this.dtaTblPrs.Columns.Add("Title",typeof(Byte));
this.dtaTblPrs.Columns.Add("PersonalName",typeof(String));
this.dtaTblPrs.Columns.Add("FamilyName",typeof(String));
this.dtaTblPrs.Columns.Add("Birthdate",typeof(DateTime));
this.dtaTblPrs.Columns.Add("Age",typeof(Int16));
this.dtaTblPrs.Columns.Add("Civilstate",typeof(Byte));
this.dtaTblPrs.Columns.Add("Profession",typeof(String));
this.dtaTblPrs.Columns.Add("AHV",typeof(String));
this.dtaTblPrs.Columns.Add("Adress",typeof(String));
this.dtaTblPrs.Columns.Add("Zip",typeof(String));
this.dtaTblPrs.Columns.Add("Place",typeof(String));
this.dtaTblPrs.Columns.Add("Postcase",typeof(String));
this.dtaTblPrs.Columns.Add("Description",typeof(String));
this.dtaTblPrs.Columns.Add("Picture",typeof(Byte[]));
this.dtaTblPrs.Columns.Add("News",typeof(Byte));
this.dtaTblPrs.Columns["News"].DefaultValue = false;
this.dtaTblPrs.Constraints.Add(null,this.dtaTblPrs.Columns["Person_ID"],true);
Lg Ishildur
Hier noch der Zustand der betreffenden Objekte zum Zeitpunkt der Exception:
dtaTblPrs.Rows[0][0] {dbac0015-7a61-496f-a7e3-837164ee616d} object {System.Guid}
dtaTblPrs.Rows[0][1] {99cf4512-8aad-4b8b-990d-eb7d3fedd39f} object {System.Guid}
dtaTblPrs.Rows[0][2] {46cc57e0-6443-4df0-b888-71088f622f37} object {System.Guid}
dtaTblPrs.Rows[0][3] 0 object {byte}
dtaTblPrs.Rows[0][4] "Erika" object {string}
dtaTblPrs.Rows[0][5] "Friedli" object {string}
dtaTblPrs.Rows[0][6] {08.08.2006 00:00:00} object {System.DateTime}
dtaTblPrs.Rows[0][7] 0 object {byte}
dtaTblPrs.Rows[0][8] "Programmierer" object {string}
dtaTblPrs.Rows[0][9] "941.81.385.258" object {string}
dtaTblPrs.Rows[0][10] "Schwenistutz 258" object {string}
dtaTblPrs.Rows[0][11] "6674" object {string}
dtaTblPrs.Rows[0][12] "Langnau" object {string}
dtaTblPrs.Rows[0][13] {} object {System.DBNull}
dtaTblPrs.Rows[0][14] {} object {System.DBNull}
dtaTblPrs.Rows[0][15] {} object {System.DBNull}
dtaTblPrs.Rows[0][16] 0 object {byte}
sqlCmd.Parameters[0].SqlDbType UniqueIdentifier System.Data.SqlDbType
sqlCmd.Parameters[1].SqlDbType UniqueIdentifier System.Data.SqlDbType
sqlCmd.Parameters[2].SqlDbType UniqueIdentifier System.Data.SqlDbType
sqlCmd.Parameters[3].SqlDbType TinyInt System.Data.SqlDbType
sqlCmd.Parameters[4].SqlDbType VarChar System.Data.SqlDbType
sqlCmd.Parameters[5].SqlDbType VarChar System.Data.SqlDbType
sqlCmd.Parameters[6].SqlDbType DateTime System.Data.SqlDbType
sqlCmd.Parameters[7].SqlDbType TinyInt System.Data.SqlDbType
sqlCmd.Parameters[8].SqlDbType VarChar System.Data.SqlDbType
sqlCmd.Parameters[9].SqlDbType VarChar System.Data.SqlDbType
sqlCmd.Parameters[10].SqlDbType VarChar System.Data.SqlDbType
sqlCmd.Parameters[11].SqlDbType VarChar System.Data.SqlDbType
sqlCmd.Parameters[12].SqlDbType VarChar System.Data.SqlDbType
sqlCmd.Parameters[13].SqlDbType VarChar System.Data.SqlDbType
sqlCmd.Parameters[14].SqlDbType Text System.Data.SqlDbType
sqlCmd.Parameters[15].SqlDbType Image System.Data.SqlDbType
sqlCmd.Parameters[16].SqlDbType Bit System.Data.SqlDbType
dtaTblPrs.Rows.Count 1 int
Exception:
Failed to convert parameter value from a Guid to a String.
Scheisse noch mal, wo ist da wohl eine verfiggte Konvertierung von Guid nach String??? Hää?? Der hat doch einen an der Waffel!!! 😜