webForumDet fria alternativet

Parametiserad fråga utan resultat

3 svar · 366 visningar · startad av Zaiman

ZaimanMedlem sedan dec. 20014 239 inlägg
#1

.NET eller SQL var skulle jag placera denna fråga... :q
Provar här iaf.

       try
            {
               
                OleDbConnection conn = new OleDbConnection("Provider=vfpoledb.1;Data Source=C:\\Ftgkatalog\\;Collating Sequence=general;");
                string query = "SELECT a, b, c FROM tabell WHERE UPPER(TXT) LIKE ?";
                OleDbDataAdapter adapter = new OleDbDataAdapter(query, conn);
                adapter.SelectCommand.Parameters.Add("@p1", OleDbType.VarChar, 80).Value = txtSok.Text.ToUpper();
                
                DataSet ds = new DataSet();

                adapter.Fill(ds, "tabell");
                gr1.DataMember = "tabell";
                gr1.DataSource = ds;
                conn.Close();
                }
            catch (OleDbException ex)
            {
                MessageBox.Show(ex.Message, "Felmeddelande", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

Hmm om jag anger något i txtSok så får jag inget resultat. Men om det är tom så får jag givetvis alla poster. Men vad gör jag fel? Har letat på stora nätet men kopplar inte vad jag missar...
Tacksam för svar.
Ska tilläggas att om jag kör genom en .asp sida mot en ODBC kopplad DSN så fungerar en liknande fråga.

@ndersMedlem sedan juni 200032 969 inlägg
#2

Hur menar du då att "liknande" fråga ser ut?
Du har ju inte några wildcards (%) i txtSok, så SQL-frågan borde bara ge exakta träffar. Lägg till % på önskad(e) sida(or) av sökordet.

ZaimanMedlem sedan dec. 20014 239 inlägg
#3

Självklart!! Att jag glömde det.

Följdfråga:
Om jag vill använda mig av parametiserade frågan hur skrivera jag om följande?
Den fungerar som sträng.

string query = "SELECT distinct a, b, c FROM tabell WHERE UPPER(TXT) LIKE '%" + txtSok.Text.ToUpper() + "%'";

Eller är det bara dumt att parametisera frågan?

@ndersMedlem sedan juni 200032 969 inlägg
#4

Jag kan inte .NET, men jag skulle gissa på att något liknande bör fjungera:

                adapter.SelectCommand.Parameters.Add("@p1", OleDbType.VarChar, 80).Value = "%" + txtSok.Text.ToUpper() + "%";

Mvh

137 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)