Toon posts:

Foutmelding DataTable met SQLiteDataAdapter

Pagina: 1
Acties:

Onderwerpen

Vraag


  • engineer88
  • Registratie: December 2011
  • Laatst online: 31-01 12:57
Voor een plugin die ik aan het schrijven ben wil ik middels een koppeltabel een nieuwe tabel genereren met waarden voor een dropdown menu.

Hiervoor heb ik de voglende method geschreven, maar ik krijg een foutmelding op regel 7 (zie ook de comment):

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public void RefreshDescription1(int prefixID)
{
    con.Open();
    SQLiteCommand cmd = new SQLiteCommand("Select TblDescription1.Id, TblDescription1.Description From TblDescription1, Prefix_Description1 Where TblDescription1.Id = Prefix_Description1.Description1_ID And Prefix_Description1.Prefix_ID = @prefixID Order By TblDescription1.Description", con);
    SQLiteDataAdapter sda = new SQLiteDataAdapter(cmd);
    DataTable dt = new DataTable();
    sda.Fill(dt); //ERROR
    con.Close();

    dr = dt.NewRow();
    dr.ItemArray = new object[] { 0, 0, "--Select Description--" };
    dt.Rows.InsertAt(dr, 0);

    comboBoxDescription1.ValueMember = "TblDescription1.Id";
    comboBoxDescription1.DisplayMember = "TblDescription1.Description";
    comboBoxDescription1.DataSource = dt;
    comboBoxDescription1.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
    comboBoxDescription1.AutoCompleteSource = AutoCompleteSource.ListItems;
}




De SQL query is:
code:
1
2
3
4
Select TblDescription1.Id, TblDescription1.Description
From TblDescription1, Prefix_Description1
Where TblDescription1.Id = Prefix_Description1.Description1_ID And Prefix_Description1.Prefix_ID = @prefixID
Order By TblDescription1.Description


Ik heb deze method en die werkt wel, maar ik begrijp niet waar het verschil zit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public void Prefix()
{
    con.Open();
    SQLiteCommand cmd = new SQLiteCommand("select * from TblPrefix Order by PrefixName", con);
    SQLiteDataAdapter sda = new SQLiteDataAdapter(cmd);
    DataTable dt = new DataTable();
    sda.Fill(dt);
    con.Close();
    dr = dt.NewRow();
    dr.ItemArray = new object[] { 0, "--Select Prefix--" };
    dt.Rows.InsertAt(dr, 0);

    comboBoxPrefix.ValueMember = "Id";
    comboBoxPrefix.DisplayMember = "PrefixName";
    comboBoxPrefix.DataSource = dt;
    comboBoxPrefix.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
    comboBoxPrefix.AutoCompleteSource = AutoCompleteSource.ListItems;
}


Kan iemand mij uitleggen waarom dit fout gaat en/of hoe dit op te lossen is? Bedankt.

Alle reacties


  • upje
  • Registratie: April 2001
  • Laatst online: 19:05
Prefix_Description1.Prefix_ID = @prefixID...

Je gebruikt een parameter in je SQL, maar die heeft geen waarde.

  • RobIII
  • Registratie: December 2001
  • Laatst online: 18:23

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

upje schreef op woensdag 9 februari 2022 @ 15:55:
Prefix_Description1.Prefix_ID = @prefixID...

Je gebruikt een parameter in je SQL, maar die heeft geen waarde.
Wat @upje zegt. Het staat er ook gewoon letterlijk: "Insufficient parameters supplied to the command" ofwel: te weinig parameters aan 't command gegeven. Je mist dus nog iets als dit.

Verder: dit is echt code uit 1921. Doe jezelf een plezier en gebruik Dapper of EF of een ander ORM ofzo. Dan worden regel 3 t/m 8 een oneliner:

C#:
1
var dropdownitems = con.Query<MyDropDownItem>("Select ...", new { prefixID = 123 });

[Voor 61% gewijzigd door RobIII op 09-02-2022 17:08]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Roses are red Violets are blue, Unexpected ‘{‘ on line 32.

Over mij


  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

RobIII schreef op woensdag 9 februari 2022 @ 16:57:
[...]

Wat @upje zegt. Het staat er ook gewoon letterlijk: "Insufficient parameters supplied to the command" ofwel: te weinig parameters aan 't command gegeven. Je mist dus nog iets als dit.

Verder: dit is echt code uit 1921. Doe jezelf een plezier en gebruik Dapper of EF of een ander ORM ofzo. Dan worden regel 3 t/m 11 een oneliner:

C#:
1
var dropdownitems = con.Query<MyItem>("Select ...", new { prefixID = 123 });
Om nog maar niet te beginnen over de komma-join-syntax. Beter expliciet aangegeven in je query op welke kolommen je wil joinen.

I have these thoughts / so often I ought / to replace that slot / with what I once bought / 'cause somebody stole my car radio / and now I just sit in silence



Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee