Foutmelding DataTable met SQLiteDataAdapter

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

  • engineer88
  • Registratie: December 2011
  • Laatst online: 11-09 18:10
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;
}


Afbeeldingslocatie: https://tweakers.net/i/N0lof3lKtwJHo-5rFylIxkP2KYY=/full-fit-in/4000x4000/filters:no_upscale():fill(white):strip_exif()/f/image/4nTxdu4YqQdKfugSMUyWOKUF.png?f=user_large

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


Acties:
  • 0 Henk 'm!

  • upje
  • Registratie: April 2001
  • Laatst online: 11-09 20:38
Prefix_Description1.Prefix_ID = @prefixID...

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

Acties:
  • +2 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
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.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • 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.

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...