Avatar billede cort Nybegynder
25. juli 2002 - 20:40 Der er 12 kommentarer og
2 løsninger

Select enkel værdi fra DB

Jeg har et lille problem.
I mine bøger står der alle mulige fine beskrivelser af hvordan man henter data fra DB og indsætter dem i datagrids og lign. Men jeg kan ikke finde en forklaring på hvordan man henter en enkelt værdi og indsætter den i en tabelcelle.
Jeg har følgene:

Dim objConnect as New SqlConnection(objConnection)

Dim strCommandText1 As String = "pclSelectCategoriesTitles 1033,1"

Dim objCommand1 As New SqlCommand(strCommandText1,objConnect)

objConnect.Open()

Her skal har jeg fundet en bestemt post i tabellen udfra de angivne kriterier.
Derefter skal denne tekststreng indsættes i
<asp:TableCell class="LeftMenuTitles" id="LeftMenuTitles" />

>Jeg har prøvet noget ala:
LeftMenuTitles.Text = objCommand1.ExecuteReader()
LeftMenuTitles.Text =  "&nbsp;&nbsp;" & objDatareader("Title") & "<br/>"

men det virker ikke.

havd gør jeg????
Avatar billede odegaard Nybegynder
25. juli 2002 - 20:58 #1
Et eksempel:

Dim myConn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\my.mdb")
Dim myQuery As String = "Select Top1 Name From MyTable"
Dim myOleDbCommand As New OleDbCommand(myQuery,myConn)
myConn.Open()
Dim myReader As OleDbDataReader = myOleDbCommand.ExecuteReader()
Try
    While myReader.Read()
          LeftMenuTitles.Text = myReader.GetValue("Name")
          Exit While
    End While
Finally
    myReader.Close()
    myConn.Close()
End Try
Avatar billede odegaard Nybegynder
25. juli 2002 - 20:59 #2
Du kan bare ændre OleDb* typerne til Sql*, hvis du hellere vil benytte disse.
Avatar billede jakobandersen Nybegynder
25. juli 2002 - 21:12 #3
Hvis du bruger SQL Server er det mest effektive at benytte en OUTPUT parameter fra en Stored procedure.

odegaard>Det er ikke et spørgsmål om at man "hellere" vil benytte Sql* fremfor OleDb*, SqlClient namespacet giver meget bedre performance ved brug med SQL Server
Avatar billede odegaard Nybegynder
25. juli 2002 - 21:19 #4
Nej, men det er vel et spørgsmål om hvilket database man vil benytte.
Jeg havde noget kode liggende, som jeg ikke gad skrive mere om end nødvendigt.
Avatar billede jakobandersen Nybegynder
25. juli 2002 - 21:23 #5
Det lød bare på dig som om at "der var frit valg"
Avatar billede odegaard Nybegynder
25. juli 2002 - 21:28 #6
Har du egentlig set nogle test af performance mellem OleDB og SQLClient ?
Avatar billede cort Nybegynder
25. juli 2002 - 21:38 #7
Sorry, det var et dårligt eksempel jeg gav jer.
Det jeg faktisk mener er hvordan laver man en simpel select ala dette som  er i klassisk asp:

Set rsSubPage = Conn.Execute("SELECT * FROM tblText WHERE Activated=True AND ID=" & intID)
Avatar billede cort Nybegynder
25. juli 2002 - 21:39 #8
ja og selvfølgelig skal SQLClient  bruges i mit tilfælde hvor jeg har en SQL server til rådighed.
Avatar billede odegaard Nybegynder
25. juli 2002 - 21:46 #9
Et recordset i ASP er vel hvad der svarer til en datareader eller et dataset i ASP.NET.
Avatar billede cort Nybegynder
25. juli 2002 - 21:46 #10
ja det har vusit ret i , men hvordan fanden laver man et i .Net
Avatar billede jakobandersen Nybegynder
25. juli 2002 - 22:06 #11
Dim objConn As New SqlConnection("DIN CONNECTION STRING HER")
Dim objCmd As New SqlCommand(SELECT * FROM tblText WHERE Activated=True AND ID=" & intID, objConn )
objConn.Open()
Dim objReader As SqlDataReader = objCmd.ExecuteReader( CommandBehaviour.CloseConnection)
Avatar billede jakobandersen Nybegynder
25. juli 2002 - 22:09 #12
Så har du et "recordset" i form af din datareader som du kan binde til datagrids eller loope igennem sådan her:

While objReader.Read()
          'Do your stuff
End While
Avatar billede cort Nybegynder
26. juli 2002 - 13:53 #13
Ja i havde tildels ret begge to.
>odegaard: dit eks. virkede hvis man fjernede ".GetValue"
Jeg synes bare det er vildt at man skal bruge et loop for at hente en værdi.

I mit tilfælde har jeg selvfølgelig brugt en output parameter som moonduck foreslog. Her er den endelige kode, hvis i skulle være interesserede.

Dim objConnect as New SqlConnection(objConnection)
       
Dim strCommandTextCatTitle As String = "pclSelectCategoriesTitles"
       
Dim objCommandCatTitle As New SqlCommand(strCommandTextCatTitle,objConnect)
       
objCommandCatTitle.CommandType = CommandType.StoredProcedure
       
Dim objParam AS SqlParameter
       
objParam = objCommandCatTitle.Parameters.Add("@intLang", SqlDBType.Int)
objParam.Direction = ParameterDirection.Input
objParam.Value = intLang
       
objParam = objCommandCatTitle.Parameters.Add("@intCat", SqlDBType.Int)
objParam.Direction = ParameterDirection.Input
objParam.Value = pCat
       
objParam = objCommandCatTitle.Parameters.Add("@Title", SqlDBType.nvarchar, 100)
objParam.Direction = ParameterDirection.Output

objConnect.Open()
objCommandCatTitle.ExecuteNonQuery()
   
LeftMenuTitles.Text = "&nbsp;&nbsp;&nbsp;&nbsp;" & objCommandCatTitle.Parameters("@Title").Value.ToString() & "<br/>"
objConnect.Close()

Tak for hjælpen i får lov at dele pointene, ok?
Avatar billede cort Nybegynder
26. juli 2002 - 13:55 #14
og min stored proc hvis der er nogen der skulle være interesseret:

CREATE PROCEDURE pclSelectCategoriesTitles
@Title nvarchar(100) OUTPUT, @intLang int, @intCat int

AS

BEGIN
SELECT @Title  = Title FROM pclCATEGORIES_TITLES WHERE Lang = @intLang And CatID = @intCat
END
GO
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester