I work in C # with the Firebird base. There is a table with a field of type varchar, the encoding Win1251 and the length set to 2000. If you change it in this field, some records give an error
firebird arithmetic exception, numeric overflow, or string truncation
string right truncation
I do not understand what the problem is.
PS That's what I noticed. If the total length in the field is more than 1036 characters, then when a change request is received, this error occurs.
The code itself:
using (FbConnection con = new FbConnection(ConString)) { con.Open(); string sql = "UPDATE OR INSERT INTO 'PARTS' ('ID','PART','DATAOTGR','CONTRACT','MBRUTTO','MNETTO','EXPORTED','PAKETS') \n" + "VALUES ( @id , @part ,@dataotgr, @contract ,@mbrutto,@mnetto,@exported,@pakets) \n" + "matching (id);"; FbCommand InsertSQL = new FbCommand(sql, con); FbParameter param; //ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ param = new FbParameter(" @ID ", obj.id.ToString()); //Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈ ΠΈΠΌΡ InsertSQL.Parameters.Add(param); //ΡΠ΅ΠΏΠ΅ΡΡ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΊ ΠΊΠΎΠΌΠΌΠ°Π½Π΄Π΅ param = new FbParameter(" @PART ", obj.part1); //ΠΈ Π΄Π°Π»ΡΡΠ΅ ΡΠ°ΠΊ ΠΆΠ΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΈ ΠΌΠ΅Π½ΡΠ΅ΠΌ ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ InsertSQL.Parameters.Add(param); param = new FbParameter("@dataotgr", obj.dataOtgr); param.FbDbType = FbDbType.Date; InsertSQL.Parameters.Add(param); param = new FbParameter(" @contract ", obj.contract); InsertSQL.Parameters.Add(param); param = new FbParameter("@MBRUTTO", obj.mBrutto); InsertSQL.Parameters.Add(param); param = new FbParameter("@MNETTO", obj.mNetto); InsertSQL.Parameters.Add(param); //Π½Π΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΡΠΈΠΏΠΎΠ² ΠΈ Π±Π»Π°-Π±Π»Π°-Π±Π»Π°. ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΠΌ bool Π² string, Π² ΡΠ°ΠΌΠΎΠΉ Π±Π°Π·Π΅ CHAR(1) string exp = obj.exported ? "1" : "0"; param = new FbParameter("@exported", exp); InsertSQL.Parameters.Add(param); param = new FbParameter("@pakets", obj.pakets); //ΠΠΠ! Π²ΠΎΡ ΠΎΠ½ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ½ΠΎΠ΅ ΠΏΠΎΠ»Π΅. ΠΎΠ±ΡΡΠ½ΠΎ Π΄Π»ΠΈΠ½Π° ΡΡΡΠΎΠΊΠΈ obj.pakets Π±ΠΎΠ»Π΅Π΅ 1000 ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ². InsertSQL.Parameters.Add(param); FbTransaction fbt = con.BeginTransaction(); //ΡΡΠ°ΡΡΡΠ΅ΠΌ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ InsertSQL.Transaction = fbt; // ΠΏΡΠΎΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ° InsertSQL int res = InsertSQL.ExecuteNonQuery(); //Π½ΡΡ ... ΡΠ°ΠΌ Π·Π°ΠΏΡΠΎΡ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌ fbt.Commit(); //Π΅ΡΠ»ΠΈ Π²ΡΡΠ°Π²ΠΊΠ° ΠΏΡΠΎΡΠ»Π° ΡΡΠΏΠ΅ΡΠ½ΠΎ - ΠΊΠΎΠΌΠΈΡΠΈΠΌ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ con.Close(); //Π·Π°ΠΊΡΡΠ²Π°Π΅ΠΌ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ }