Jag aktiverade mig som bonusmedlem igen och försökte med artiklarna Pelle skrivit "Skapa DATABASLAGER" och "Förbered ett projekt mot dataklasser". Jag har inte SQL_server och jag har varit inne och läst på www.connectionstrings.com, men som nybörjare i ASP.NET förstår jag inte det. Jag har hållt på med .asp sidor men vill gå över till asp.net. Jag vill använda mig av en MS Access databas, anledning kostnadsfråga på webbhotellet. Du kan också använda en sql-databas som du placerar lokalt i din webbsite. Vilket hotell har du så kan vi kanske råda dig till ett bra alternativ .. Hej crystone heter webhotellet, jag gör websiten till en kompis mest för att det är roligt, och nu vill jag uppdatera till asp.net. Hej Bo, dags för mig att börja skriva lite .net artiklar tror jag .. Hej jag får detta felmeddelande, men jag förstår inte vad jag gjort för fel. Hej Bo Hej jag är nog lite dum men när jag kör build får jag följande varningar (se nedan) DET FUNGERAR delvis!!! Tack för hjälpen. Jag har skrivit om projektet flera gånger och nu fungerar det mesta, jag hade gjort fel upptäkte jag, hade inte förstått allt, men det är väl så man lär sig. ASP.NET nybörjare - ansluta mot databas
Jag kör med Visual Studio 2010 Ultimate
Någon som vill ge mig råd...
Tack på förhand
Vänligen
Bo
-----------------------------------------------------------------------------------
webform1.aspx
---------------------------------------------------------------------------------
<%@ Page Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim dr As SqlClient.SqlDataReader = _
DataFunctions.SQLFunctions.ReturnDataReader("select * from customers")
DataGrid1.DataSource = dr
DataGrid1.DataBind()
dr.Close()
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
<asp:GridView ID="DataGrid1" runat="server">
</asp:GridView>
</form>
</body>
</html>
---------------------------------------------------------------------------------------------------------------------
web.config
---------------------------------------------------------------------------------------------------------------------
<?xml version="1.0"?>
<configuration>
<appSettings>
<add key="ConnectionString" value="data source=??????????;initial catalog=northwind;
integrated security=true;" />
<add key="ConnectionStringLocal" value="data source=(local);initial catalog=northwind;
integrated security=true;" />
</appSettings>
<system.web>
<compilation defaultLanguage="VB" debug="true" strict="false" explicit="true" targetFramework="4.0" />
<authentication mode="Forms">
<forms loginUrl="~/Account/Login.aspx" timeout="2880" />
</authentication>
<membership>
<providers>
<clear/>
<add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices"
enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false"
maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
applicationName="/" />
</providers>
</membership>
<profile>
<providers>
<clear/>
<add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/"/>
</providers>
</profile>
<roleManager enabled="false">
<providers>
<clear/>
<add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="/" />
<add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" />
</providers>
</roleManager>
</system.web>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
</configuration>
----------------------------------------------------------------------------------------
class1.VB
------------------------------------------------------------------------------------------
Imports System.Web
Imports System.Configuration
Imports System.Data
Imports System.Data.SqlClient
Public Class SQLFunctions
Shared Function GetConnectionString() As String
If InStr(HttpContext.Current.Request.Url.ToString.ToLower, "localhost") > 0 Then
GetConnectionString = ConfigurationSettings.AppSettings("ConnectionStringLocal")
Else
GetConnectionString = ConfigurationSettings.AppSettings("ConnectionStringLocal")
End If
End Function
Shared Function ReturnDataset(ByVal query As String) As DataSet
Dim conn As New SqlConnection(GetConnectionString)
Dim adapter As New SqlDataAdapter
Dim dataset As New DataSet
Try
adapter.SelectCommand = New SqlCommand(query, conn)
adapter.Fill(dataset)
Catch ex As SystemException
Throw New ApplicationException("SQL: kan inte köra frågan:" & Err.Description & query)
End Try
Return dataset
End Function
Public Shared Function ReturnDataReader(ByVal sqlquery As String) As SqlDataReader
Dim myConnection As SqlConnection = New SqlConnection(GetConnectionString)
Dim myCommand As SqlCommand = New SqlCommand(sqlquery, myConnection)
myCommand.CommandType = CommandType.Text
Try
myConnection.Open()
Dim result As SqlDataReader = myCommand.ExecuteReader _
(CommandBehavior.CloseConnection)
Return result
Catch ex As DataException
Throw New SystemException("Fel på anrop av sql-fråga: " & sqlquery & "-" & Err.Description)
End Try
myCommand = Nothing
myConnection = Nothing
End Function
End ClassSv: ASP.NET nybörjare
Sv:ASP.NET nybörjare
Jag tyckte dina artiklar var pedagogiska och väldigt lätt att följa, skulle vilja få i gång så just detta fungerar sedan kan jag bygga vidare och förbättra min förståelse och kunskap.
Där finns några böcker för nybörjare på din site, men de hade utgått i sortimentet - jag skulle helst vilja ha på svenska, men får jag igång detta kan det komma efter hand.
Tack på förhand
MVH
BoSv: ASP.NET nybörjare
Gör såhär i VS 2010 Ultimate för att börja ...
1. Skapa ny ASP.NET webb applikation som du döper till något
2. Högerklicka på katalogen app_data och välj add new item
3. Välj sql server databas och döp den till något och tryck sedan add
4. Databasen skapas och i server explorer visas nu alla tabeller och liknande
5. Högerklicka på tables och börja skapa dina tabeller
När detta är klart så har du en sql-databas som du behöver ansluta mot och connectionsträngen skall pekas in till denna databas för att kunna använda artikeln som du önskat.
Antingen använder du något i stil med :
<info>
Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\databasename.mdf;Integrated Security=True;User Instance=True
</info>
Så i din web.config skall du ange följande:
<add key="ConnectionStringLocal" value=".....se ovan....." />
Eller så kan du dra in från din toolbox en sqldatasource till en aspxsida så kommer du få en guide hur du ansluter mot databasen. Därefter kan du använda mina eller någon annans klasser för att börja ansluta mot databasen, ställa frågor och arbeta vidare.
Den databasen som nu finns i ditt projekt kan du alltså ladda upp till webbsajten och på så sätt distribuera en databas på ett enkelt och smidigt sätt. Denna databas kan du senare attacha till en riktig sql-server i framtiden.
Lycka tillSv:ASP.NET nybörjare
Tack på förhand.
Vänligen
Bo
Server Error in '/' Application.
--------------------------------------------------------------------------------
Compilation Error
Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.
Compiler Error Message: BC30002: Type 'SqlClient.SqlDataReader' is not defined.
Source Error:
Line 6:
Line 7: Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Line 8: Dim dr As SqlClient.SqlDataReader = _
Line 9: DataFunctions.SQLFunctions.ReturnDataReader("select * from tbl1")
Line 10: DataGrid1.DataSource = dr
Source File: C:\Documents and Settings\Administrator\My Documents\Visual Studio 2010\Projects1\MyWebbapplication\MyWebbapplication\webform1.aspx Line: 8
-------------------------------------
så här ser webform1 ut:
.................................................
<%@ Page Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim dr As SqlClient.SqlDataReader = _
DataFunctions.SQLFunctions.ReturnDataReader("select * from tbl1")
DataGrid1.DataSource = dr
DataGrid1.DataBind()
dr.Close()
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<asp:GridView ID="DataGrid1" runat="server">
</asp:GridView>
<div>
</div>
</form>
</body>
</html>Sv: ASP.NET nybörjare
Jag tror du är ganska ny på .net så jag försöker vara lite övertydlig. När man har kommandon som detta - sqlclient.sqldatareader och systemet inte kan hitta detta - då betyder det att du måste leta reda på vilket objekt som används och sätta en referens till detta.
Vi tar ett exempel. Skriv:
Dim dr as sqlcl..
Om det hade funnits en referens till detta namespace som det kallas så hade en lista visats upp men nu gör det inte det. Så om vi först
Med kommandot Imports i vb och Using i c# så kan vi sätta referenser till de namespace vi behöver i vår kod (under förutsättning att vi har referenser till berört bibliotek).
Så, om vi överst på sidan skriver Imports och de namespace vi behöver referera till, så kommer troligtvis detta fungera.
<code>
Imports System.Data
Imports System.Data.SqlClient
Partial Class _Default
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim dr As SqlClient.SqlDataReader
End Sub
End Class
</code>
Men, om du är lite van kan du göra detta enklare i vs2010 genom att hålla musen över sqlclient.sqldatareader och få upp utropstecknet, klicka på det och få upp en hjälptext. På översta raden står det Typen sql... är inte definierad, första valet är välj "import system.data". Samma effekt ..
Nästa moment blir:
Dim dr As SqlClient.SqlDataReader = dataclass.ReturnDatareader("select * from tabell")
while dr.read
response.write( dr("kolumnnamn"))
end while
dr.close()
Eller som ditt exempel:
Dim dr As SqlClient.SqlDataReader = _
DataFunctions.SQLFunctions.ReturnDataReader("select * from tbl1")
DataGrid1.DataSource = dr
Du måste också sedan databinda för att visa resultatet i griden. Skriv då:
DataGrid1.DataBind
dr.close()
Obs, du måste alltid stänga en datareader med .close för att inte hålla anslutningar öppna. Ett dataset
stänger sig själv men är oeffektivt så undvik det i möjligaste mån.
Om det inte fungerar då är det troligen connectionsträngen som inte fungerar eller pekar rätt.
Hoppas detta hjälper dig vidareSv:ASP.NET nybörjare
när jag kör webform2.aspx debug visas sidan blank, men inga felmeddelande.
Jag klistrar in mina sidor under varningsmeddelanden. Jag gör något fel men jag vet inte vad. Databasen jag använder hittade jag i ett annat fungerande projekt, så den borde fungera, har lagt till den i mappan app_data.
Har jag skrivit in funktionerna fel, eller ska sqlfunctions.vb ligga i en mapp, jag tycker jag har provat med allt vad jag kan komma på. Tack på förhand Bo
Warning 1 'Public Shared ReadOnly Property AppSettings As System.Collections.Specialized.NameValueCollection' is obsolete: 'This method is obsolete, it has been replaced by System.Configuration!System.Configuration.ConfigurationManager.AppSettings'. C:\Documents and Settings\Administrator\My Documents\Visual Studio 2010\Projects1\MyWebbapplication\MyWebbapplication\SQLFunctions.vb 12 35 MyWebbapplication
Warning 2 'Public Shared ReadOnly Property AppSettings As System.Collections.Specialized.NameValueCollection' is obsolete: 'This method is obsolete, it has been replaced by System.Configuration!System.Configuration.ConfigurationManager.AppSettings'. C:\Documents and Settings\Administrator\My Documents\Visual Studio 2010\Projects1\MyWebbapplication\MyWebbapplication\SQLFunctions.vb 14 35 MyWebbapplication
Warning 3 Function without an 'As' clause; return type of Object assumed. C:\Documents and Settings\Administrator\My Documents\Visual Studio 2010\Projects1\MyWebbapplication\MyWebbapplication\webform2.aspx 9 22 Miscellaneous Files
Warning 4 Function 'DataReaderLoop' doesn't return a value on all code paths. A null reference exception could occur at run time when the result is used. C:\Documents and Settings\Administrator\My Documents\Visual Studio 2010\Projects1\MyWebbapplication\MyWebbapplication\webform2.aspx 17 5 Miscellaneous Files
webform2.aspx-----------------------------------------------------------------------------
<%@ Page Language="VB" %>
<%@ Import Namespace="System.Data" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Private Function DataReaderLoop()
Dim dr As SqlClient.SqlDataReader = DataFunctions.SQLFunctions.ReturnDataReader("select * from Products")
While dr.Read
Response.Write(dr("Name"))
End While
dr.Close()
End Function
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Test</title>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
</form>
</body>
</html>
sqlFunctions.vb-----------------------------------------------------
Imports System.Web
Imports System.Configuration
Imports System.Data
Imports System.Data.SqlClient
Public Class SQLFunctions
Shared Function GetConnectionString() As String
If InStr(HttpContext.Current.Request.Url.ToString.ToLower, "localhost") > 0 Then
GetConnectionString = ConfigurationSettings.AppSettings("ConnectionStringLocal")
Else
GetConnectionString = ConfigurationSettings.AppSettings("ConnectionStringLocal")
End If
End Function
Shared Function ReturnDataset(ByVal query As String) As DataSet
Dim conn As New SqlConnection(GetConnectionString)
Dim adapter As New SqlDataAdapter
Dim dataset As New DataSet
Try
adapter.SelectCommand = New SqlCommand(query, conn)
adapter.Fill(dataset)
Catch ex As SystemException
Throw New ApplicationException("SQL: kan inte köra frågan:" & Err.Description & query)
End Try
Return dataset
End Function
Public Shared Function ReturnDataReader(ByVal sqlquery As String) As SqlDataReader
Dim myConnection As SqlConnection = New SqlConnection(GetConnectionString)
Dim myCommand As SqlCommand = New SqlCommand(sqlquery, myConnection)
myCommand.CommandType = CommandType.Text
Try
myConnection.Open()
Dim result As SqlDataReader = myCommand.ExecuteReader _
(CommandBehavior.CloseConnection)
Return result
Catch ex As DataException
Throw New SystemException("Fel på anrop av sql-fråga: " & sqlquery & "-" & Err.Description)
End Try
myCommand = Nothing
myConnection = Nothing
End Function
Shared Sub ExecuteQuery(ByVal sqlquery As String)
' endast för ins/upd/del
' Skapa instans av en Connection samt Command Object
Dim connectionstring As String = GetConnectionString()
Dim Con As New SqlConnection(connectionstring)
Dim cmd As SqlCommand
' öppnar connection
Con.Open()
' skickar in datat
cmd = New SqlCommand(sqlquery, Con)
' kör sp:n eller sql-satsen
Try
cmd.ExecuteNonQuery()
Catch ex As Exception
Throw New SystemException("Fel vid anrop av sql-fråga: " & sqlquery & "-" & Err.Description)
End Try
' stänger och frigör objekten
Con.Close()
End Sub
End Class
web.config------------------------------------------------------------------
<?xml version="1.0"?>
<configuration>
<appSettings>
<add key="ConnectionString" value="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|WroxUnited.mdf;Integrated Security=True;User Instance=True" />
<add key="ConnectionStringLocal" value="data source=.\SQLEXPRESS;AttachDBFilename=|DataDirectory|\WroxUnited.mdf;Integrated Security;User Instance=true" />
</appSettings>
<system.web>
<compilation defaultLanguage="VB" debug="true" strict="false" explicit="true" targetFramework="4.0" />
<authentication mode="Forms">
<forms loginUrl="~/Account/Login.aspx" timeout="2880" />
</authentication>
<membership>
<providers>
<clear/>
<add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices"
enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false"
maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
applicationName="/" />
</providers>
</membership>
<profile>
<providers>
<clear/>
<add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/"/>
</providers>
</profile>
<roleManager enabled="false">
<providers>
<clear/>
<add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="/" />
<add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" />
</providers>
</roleManager>
</system.web>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
</configuration>Sv:ASP.NET nybörjare
Kopplat till datagridden fungerar, presenterar innehållet från databasen, men när jag ska göra samma sak som i artikeln "Loopa data från datareader..." får jag inte till det. I webform2.aspx har jag inte skrivit något. Klistrat in felmeddelande och 2 filer om någon vill hjälpa mig.
Tack på förhand
Vänligen Bo
Här är felmeddelandet:
----------------------------------------------------------------------------------------------------------------
Warning 1 Function 'DataReaderLoop' doesn't return a value on all code paths. A null reference exception could occur at run time when the result is used. C:\Documents and Settings\Administrator\My Documents\Visual Studio 2010\Projects3\MyWebbapplication3\MyWebbapplication3\WebForm2.aspx.vb 15 5 MyWebbapplication3
--------------------------------------------------------------------------------------------------------
Här är filerna:
filen webform2.aspx--------------------------------
<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="WebForm2.aspx.vb" Inherits="MyWebbapplication3.WebForm2" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
</form>
</body>
</html>
filen webform2.aspx.vb-------------------------------
Public Class WebForm2
Inherits System.Web.UI.Page
Private Function DataReaderLoop()
Dim dr As SqlClient.SqlDataReader = DataFunctions.SQLFunctions.ReturnDataReader("select * from products")
While dr.Read
Response.Write(dr("0") & " ")
Response.Write(dr("ProductID") & " ")
Response.Write(dr.GetSqlString(3).ToString & "<br>")
End While
dr.Close()
End Function
End Class