AMcoder - javascript, python, java, html, php, sql

«Սյունակների քանակը չի համընկնում 1-ին տողի արժեքի քանակի հետ»

Ես դիտել եմ տարբեր հղումներ (օրինակ՝ մեկ), բայց ես դեռ չեմ կարողանում հասկանալ, թե որտեղից է գալիս այս սխալի հաղորդագրությունը: Շարունակում եմ հաշվել սյունակները, կոմաները և այլն՝ չգտնելով, թե որտեղ է խնդիրը։

int exId = stride.getExerciseId();
string timestamp = stride.getTimeStamp();
int startSec = stride.getBeginningSec();
int startMsec = stride.getBeginningMSec();
int endSec = stride.getEndSec();
int endMSec = stride.getEndMSec();
float length = stride.getLength();
float duration = stride.getDuration();
float steplength = stride.getStepLength();
float stepDuration = stride.getStepDuration();
string supportingFoot = stride.getSupportingFoot();

string query = "INSERT INTO singlesupportstate (ExerciseId , TimeStamp , SingleSupportStateStartSeconds , SingleSupportStateStartMSeconds , SingleSupportStateEndSeconds , SingleSupportStateEndMSeconds , StrideLength , StrideDuration , StepLength , StepDuration , SupportingFoot) 
VALUES("+ exId +",'" + timestamp +"',"+ startSec +"," + startMsec + "," + endSec + "," + endMSec + "," + length +"," + duration + "," + steplength + "," + duration + ",'" + supportingFoot + "')";
if (this.OpenConnection() == true)
{
     MySqlCommand cmd = new MySqlCommand(query, connection);
     cmd.ExecuteNonQuery();
     this.CloseConnection();
}

Խմբագրել՝

Այսպիսով, ես փոխեցի իմ կոդը, որպեսզի օգտագործեմ Պարամետրացված հարցումը, ահա նոր կոդը, որն աշխատում է.

if (this.OpenConnection() == true)
        {
            MySqlCommand cmd = connection.CreateCommand() ;
            cmd.CommandText = "INSERT INTO singlesupportstate (ExerciseId , TimeStamp , SingleSupportStateStartSeconds , SingleSupportStateStartMSeconds , SingleSupportStateEndSeconds , SingleSupportStateEndMSeconds , StrideLength , StrideDuration , StepLength , StepDuration , SupportingFoot) "
                +" VALUES(@exId,@timestamp,@startSec,@startMsec,@endSec,@endMSec,@length,@duration,@steplength,@stepduration,@supportingFoot)";

            cmd.Parameters.Add("@exId", MySqlDbType.Int32);
            cmd.Parameters.Add("@timestamp",MySqlDbType.Timestamp);
            cmd.Parameters.Add("@startMsec",MySqlDbType.Int32);
            cmd.Parameters.Add("@startSec",MySqlDbType.Int32);
            cmd.Parameters.Add("@endSec",MySqlDbType.Int32);
            cmd.Parameters.Add("@endMSec",MySqlDbType.Int32);
            cmd.Parameters.Add("@length", MySqlDbType.Float);
            cmd.Parameters.Add("@duration",MySqlDbType.Float);
            cmd.Parameters.Add("@steplength",MySqlDbType.Float);
            cmd.Parameters.Add("@stepduration", MySqlDbType.Float);
            cmd.Parameters.Add("@supportingfoot", MySqlDbType.Text);

            cmd.Parameters["@exId"].Value = exId;
            cmd.Parameters["@timestamp"].Value = timestamp;
            cmd.Parameters["@startMsec"].Value = startMsec;
            cmd.Parameters["@startSec"].Value = startSec;
            cmd.Parameters["@endSec"].Value = endSec;
            cmd.Parameters["@endMSec"].Value = endMSec;
            cmd.Parameters["@length"].Value = length;
            cmd.Parameters["@duration"].Value = duration;
            cmd.Parameters["@steplength"].Value =steplength;
            cmd.Parameters["@stepduration"].Value =stepDuration;
            cmd.Parameters["@supportingfoot"].Value =supportingFoot;
            cmd.CommandTimeout = 120;
            cmd.ExecuteNonQuery();
            this.CloseConnection();
        }
04.07.2013

  • Այստեղ դուք պետք է օգտագործեք պարամետրացված հարցումներ, հնարավոր է, որ պարամետրերից մեկն ունենա լրացուցիչ ' կամ նման բան 04.07.2013
  • Հնարավոր է, որ ձեր օգտագործած արժեքներից մեկը կա՛մ ստիպում է SQL-ին մտածել, որ դուք ավելի շատ արժեքներ ունեք, քան սյունակներ: Կարո՞ղ եք տպել, թե ինչ արժեք ունի «հարցումը»: Ի՞նչ է դա ասում: 04.07.2013
  • Փորձեք դուրս բերել ձեր հարցման տողը կամ դիտել այն վրիպազերծիչում: Եթե ​​խնդիր չեք տեսնում, խնդրում ենք տեղադրել հարցման տողը և ձեր singlesupportstate աղյուսակի կառուցվածքը ձեր հարցի հետ միասին: 04.07.2013

Պատասխանները:


1

Այն, ինչ հավանաբար տեղի է ունենում, երկու բաներից մեկն է.

1) Կան ' մեջբերումներ, որոնք ստիպում են ձեր հարցումը թվալ, որ այն ավելի քիչ արժեքներ ունի, քանի որ այն սպառում է ստորակետերը: 2) Կան թվեր, որոնք ֆորմատավորվում են ստորակետով և ոչ թե կետով, ինչի արդյունքում 123.45 թիվը ցույց է տալիս որպես 123,45, այդպիսով հարցումը ստիպում է մտածել, որ երկու ամբողջ արժեք կա՝ 123 և 45, ինչը հանգեցնում է չափազանց շատ արժեքների:

Ինչպես մյուսներն են ասել, փորձեք և օգտագործեք հարցման պարամետրերը, և դա այլևս չի կրկնվի: Այն նաև ձեզ խնայում է տողերից ձեռքով փախչելուց:

04.07.2013
  • Հարցման տողին ավելի ուշադիր նայելուց հետո թվում է, որ float-ի ստորակետներն են իմ խնդրի պատճառները: Շնորհակալություն 04.07.2013

  • 2

    Սա նշանակում է, որ կապակցման արժեքներից մեկում խախտում է INSERT-ը, քանի որ այն ունի ստորակետ կամ տողերի սահմանազատիչ՝ այդպիսով կոտրելով ամբողջ query տողը:

    Նայեք իրական query տողի հետո միացումից, մինչ կատարումը

    Եվ օգտագործեք պարամետրեր այս խնդիրը, այնուամենայնիվ, հեռացնելու և SQL ներարկման ռիսկերը մեղմելու համար:

    Մյուս տարբերակը գործարկիչն է (ասենք աուդիտի կամ պատմության համար) singlesupportstate աղյուսակի վրա, որն ունի նաև կոտրված INSERT:

    04.07.2013
  • Հնարավո՞ր է, որ լողացող թվերի ստորակետները բերեն այս բացառությանը: 04.07.2013
  • @FlorentGz. բացարձակապես, այո: Ինչպես ասացի նախկինում ընդունված պատասխանը տեղադրվեց 04.07.2013
  • Նոր նյութեր

    Օգտագործելով Fetch Vs Axios.Js-ը՝ HTTP հարցումներ կատարելու համար
    JavaScript-ը կարող է ցանցային հարցումներ ուղարկել սերվեր և բեռնել նոր տեղեկատվություն, երբ դա անհրաժեշտ լինի: Օրինակ, մենք կարող ենք օգտագործել ցանցային հարցումը պատվեր ներկայացնելու,..

    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար
    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար Ինչպե՞ս հանգստացնել ձեր միտքը և աշխատեցնել ձեր պրոցեսորը: Ինչպես մնալ հանգիստ և զարգանալ ճնշման տակ...

    Մեքենայի ուսուցում բանկային և ֆինանսների ոլորտում
    Բարդ, խելացի անվտանգության համակարգերը և հաճախորդների սպասարկման պարզեցված ծառայությունները բիզնեսի հաջողության բանալին են: Ֆինանսական հաստատությունները, մասնավորապես, պետք է առաջ մնան կորի..

    Ես AI-ին հարցրի կյանքի իմաստը, այն ինչ ասում էր, ցնցող էր:
    Այն պահից ի վեր, երբ ես իմացա Արհեստական ​​ինտելեկտի մասին, ես հիացած էի այն բանով, թե ինչպես է այն կարողանում հասկանալ մարդկային նորմալ տեքստը, և այն կարող է առաջացնել իր սեփական արձագանքը դրա..

    Ինչպես սովորել կոդավորումը Python-ում վագրի պես:
    Սովորելու համար ծրագրավորման նոր լեզու ընտրելը բարդ է: Անկախ նրանից, թե դուք սկսնակ եք, թե առաջադեմ, դա օգնում է իմանալ, թե ինչ թեմաներ պետք է սովորել: Ծրագրավորման լեզվի հիմունքները, դրա..

    C++-ի օրական բիթ(ե) | Ամենաերկար պալինդրոմային ենթաշարը
    C++ #198-ի ամենօրյա բիթ(ե), Ընդհանուր հարցազրույցի խնդիր. Ամենաերկար պալինդրոմային ենթատող: Այսօր մենք կանդրադառնանք հարցազրույցի ընդհանուր խնդրին. Ամենաերկար palindromic substring...

    Kydavra ICAReducer՝ ձեր տվյալների ծավալայինությունը նվազեցնելու համար
    Ի՞նչ է ICAReducer-ը: ICAReducer-ն աշխատում է հետևյալ կերպ. այն նվազեցնում է նրանց միջև բարձր փոխկապակցված հատկանիշները մինչև մեկ սյունակ: Բավականին նման է PCAreducer-ին, չնայած այն..