webForumDet fria alternativet

Parametiserad fråga utan resultat

Databaser & SQLur Databashanterare & SQL

3 svar · 366 visningar · startad av Zaiman

Medlem sedan dec. 20014 239 inlägg
Frågan#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.

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

Medlem 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?

Medlem 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

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