webForumDet fria alternativet

En Post från Db till ett textfält.

.NET

8 svar · 463 visningar · startad av T_Codez

Medlem sedan juli 2001458 inlägg
Frågan#1

Hej

Nu får ni ladda om...

There is a New ASP.NET Newbie in the forumtown...

Problem / Önskemål.

1. Jag vill hämta en post i en SqlServer Db
2. Lägga in ett värde i en textbox
3. Hur ska det se ut... ??? (har förstått att rs dagarna numera är förbi).

Miljö:
SQL Server 2003
Visual Studio 2003 Sp 1

Har letat lite på nätet. Men antar att det här är för lätt för att få vara med. Därför måsta ju jag fråga om det...

Så här långt ser det ut så här:


Dim t

SQL = "Select tblGuestbook.Guestbook From tblGuestbook Where tblGuestbook.ID = Request.QueryString(ID)"
Dim Conn As New SqlConnection(strConn)
Dim Command As New SqlCommand(SQL, Conn)
Conn.Open()
Command.ExecuteNonQuery()

Response.Write(t)
Txt_Gbook.Text = t
Conn.Close()

Tack för uppmärksamheten...

Medlem sedan dec. 19996 522 inlägg
#2

Öppna en datareader, läs ut värdet från den, stäng datareadern och connection

Medlem sedan jan. 20012 204 inlägg
#3

Ja den koden du har ovan "ExecuteNonQuery" exekverar bara sql-koden på sql-servern och ger inget svar, utom hur många rader som ändrades. Använd en sqldatareader eller fyll med en adapter till dataset/datatable.

Medlem sedan juli 2001458 inlägg
#4

Eeehhh... Okay...

Typ så här då, eller? "Chansar vilt, känns det som..."


    Public Sub FillTextField()

        Dim SQL As String

        SQL = "Select tblGuestbook.Guestbook From tblGuestbook Where tblGuestbook.ID = " & Request.QueryString("Id")
        Response.Write(SQL & "<br>")

        Dim Conn As New SqlConnection(strConn)
        Dim Command As New SqlCommand("SQL", Conn)

        Conn.Open()

        Dim minReader As SqlDataReader = Command.ExecuteReader()
        minReader.GetString(SQL)

        Do While minReader.Read()
            Txt_Gbook.Text = minReader.GetString(0)
        Loop

        minReader.Close()
        Conn.Close()

    End Sub

Den här koden genererar ett felmeddalnde som:

Could not find stored procedure 'SQL'

Vilket gör mig något förvirrad. Använder mig inte av lagrade procedurer...

Finns det effektivare kod när man endast ska läsa en post?

Medlem sedan juli 200330 inlägg
#5
Dim Command As New SqlCommand([B]"SQL"[/B], Conn)

Ta bort "" så fungerar det?

    Public Sub FillTextField()

        Dim SQL As String

        SQL = "Select tblGuestbook.Guestbook From tblGuestbook Where tblGuestbook.ID = " & Request.QueryString("Id")
        Response.Write(SQL & "<br>")

        Dim Conn As New SqlConnection(strConn)
        Dim Command As New SqlCommand(SQL, Conn)

        Conn.Open()

        Dim minReader As SqlDataReader = Command.ExecuteReader()

        While minReader.Read()
            Txt_Gbook.Text = minReader.GetString(0)
        end while

        minReader.Close()
        Conn.Close()

    End Sub
Medlem sedan juli 2001458 inlägg
#6

Kanon Andy K!

Med extremt små fnuttifikationsändringar så blev det följande fungeraande variant:

        Dim SQL As String

        SQL = "Select tblGuestbook.Guestbook From tblGuestbook Where tblGuestbook.ID = " & Request.QueryString("ID") & " "

        Response.Write(SQL & "<br>")

        Dim Conn As New SqlConnection(strConn)
        Dim Command As New SqlCommand(SQL, Conn)

        Conn.Open()
        Dim dr As SqlClient.SqlDataReader = Command.ExecuteReader()

        If dr.Read() = True Then
            Txt_Gbook.Text = dr("Guestbook")
        End If

        Conn.Close()

All Credits till dig Andy K

Medlem sedan sep. 20011 914 inlägg
#7

DataReadern använder du för att ta ut flera rader eller en rad med flera kolumner. Om du bara skall ta ut ett värde från en kolumn använder du ExecuteScalar. Om din sql sats skulle retunerar flera rader så tar ExecuteScalar det första värdet.

Dim sql as string = String.Format("Select tblGuestbook.Guestbook From tblGuestbook Where tblGuestbook.ID = {0}", Request.QueryString("ID"))
Dim conn As New SqlConnection(strConn)
Dim cmd As New SqlCommand(sql, conn)

Try
   conn.Open()
   Txt_Gbook.Text = cmd.ExecuteScalar().ToString()
Catch
   Throw
Finally
   conn.Close()
End Try
Medlem sedan juli 2001458 inlägg
#8

Den funkade klockrent den med... Tackar och bockar för lektionen
:birp

Medlem sedan juli 200330 inlägg
#9

Tackar för det T Codez!

Och tack Dino för ditt exempel, lärde mig nåt nytt där!

262 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
130 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)