TT_CodezMedlem sedan juli 2001458 inlägg 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...
EerkaMedlem sedan dec. 19996 522 inlägg Öppna en datareader, läs ut värdet från den, stäng datareadern och connection
PPMedlem sedan jan. 20012 204 inlägg 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.
TT_CodezMedlem sedan juli 2001458 inlägg 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?
AAndy_KMedlem sedan juli 200330 inlägg 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
TT_CodezMedlem sedan juli 2001458 inlägg 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
DDinoMedlem sedan sep. 20011 914 inlägg 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
TT_CodezMedlem sedan juli 2001458 inlägg Den funkade klockrent den med... Tackar och bockar för lektionen
:birp
AAndy_KMedlem sedan juli 200330 inlägg Tackar för det T Codez!
Och tack Dino för ditt exempel, lärde mig nåt nytt där!