Dim Reader As System.Data.SqlClient.SqlDataReader Reader = Command.ExecuteReader(CommandBehavior.CloseConnection) If Reader.Read = True Then Do session("SessionNavn") = Reader("id").ToString.Trim Loop While Reader.Read Else
I stedet for ExcuteReader, kan du alternativt kan du bruge en ExecuteScalar, der udelukkende henter første kolonne i din select. Data bliver returneret som et object.
string sql = "SELECT [id] FROM [Menu] WHERE ([MainMenu] = '1')"; SqlConnection connection = new SqlConnection(ConnectionStrings["DataConnectionString"]); SqlCommand command = new SqlCommand(sql, connection); try { connection.Open(); Session["result"] = command.ExecuteScalar(); } finally { connection.Close(); }
<script runat="server"> Imports System.data <-- 'Imports' statements must precede any declarations. Imports System.Data.Sqlclient <-- 'Imports' statements must precede any declarations.
string sql = "SELECT [id] FROM [Menu] WHERE ([MainMenu] = '1')"; <-- Syntax error ved "string" SqlConnection connection = new SqlConnection(ConnectionStrings["DataConnectionString"]); <-- Declaration expected ved SqlConnection SqlCommand command = new SqlCommand(sql, connection); try { connection.Open(); Session["result"] = command.ExecuteScalar(); } finally { connection.Close(); } </script>
Øh - ingen anelse. Du arbejder tydeligvis uden separat code-behind fil, og det har jeg ingen erfaring i. Normalt så lægger man Imports bla bla øverst i code behind filen..
Umiddelbart tror jeg at du mangler type="text/VB" i dit script tag , således: <script type="text/VB"> </script>
Det nemmeste er vel at rename din eksisterende fil,lave Add New Item og specificere det gamle filnavn. Husk at sætte kryds i feltet Place code in separate file. Derefter kan du kopiere de bidder du allerede har lavet vha træk og slip, og dit script skal så placeres i en eller anden passende handler - PageLoad eller whatever - afh af hvad du vil.
Partial Class MasterPage Inherits System.Web.UI.MasterPage
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load string sql = "SELECT [id] FROM [Menu] WHERE ([MainMenu] = '1')" SqlConnection connection = new SqlConnection(ConnectionStrings["DataConnectionString"]) SqlCommand(Command() = New SqlCommand(Sql, connection)) Try { connection.Open() Session["result"] = command.ExecuteScalar() } Finally { connection.Close() } End Sub End Class
Men den melder også fejl..
'String' is a class type and cannot be used as an expression. '.' expected. 'SqlConnection' is a type and cannot be used as an expression. Method arguments must be enclosed in parentheses. Name 'connection' is not declared. Name 'ConnectionStrings' is not declared. Identifier expected. 'SqlCommand' is a type and cannot be used as an expression. 'System.Data.Sql' is a namespace and cannot be used as an expression. Name 'connection' is not declared. Syntax error. Name 'connection' is not declared. Property access must assign to the property or use its value. Identifier expected. Syntax error. 'Finally' must end with a matching 'End Try'. Syntax error. Name 'connection' is not declared. Syntax error.
Det skal vel så vær noget i den her stil når jeg skal hente det ud:
Public Function Create() As Integer Dim connection As New SqlConnection(_ConnectionString) connection.Open() Dim command As New SqlCommand("SELECT id from Menu WHERE MainMenu = '1'")
Altså glem Function create - det var blot et copy/paste eksemper på VB kode som gør noget tilsvarende som du vil. Jeg vil anbefale dig meget kraftigt at kigge på nogle af de ASP tutorials som ligger på www.asp.net og andre steder på nettet.
det eksempel karsten larsen kom med (som det første svar) er da fint nok med lidt modifikationer:
Dim connection As New SqlConnection(_ConnectionString) connection.Open() Dim command As New SqlCommand("SELECT id from Menu WHERE MainMenu = 1") Dim Reader As System.Data.SqlClient.SqlDataReader Reader = Command.ExecuteReader(CommandBehavior.CloseConnection) while (reader.read) minVariabel = Reader("id").ToString end while
alt ovenstående hvis du har flere end et ID du vil hente. Hvis du ved du kun her een værdi så kan du gøre sådan her i stedet for:
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.