Jag e helt ny på asp.net, använder mig av VB och har installerat .net 2.0, mysql 4.1 och MySQL Connector/Net.
Borde vara all information som behövs va? Har även odbc installerat ifall det spelar någotn roll..
har jag missat något vitalt så säg till, jag e som sagt helt nybörjare och har bara jobbat med classisk asp innan.
Så enklast möjliga sätt att ansluta till en databas, hämta ut ett par poster och skriva ut dom, det är vad jag behöver veta sen kan jag nog prova mig fram :)
Jag är lite osäker på om du har tänkt att börja med att koda det själv, eller om du använder någon utvecklingsverktyg (typ, webmatrix, visual web developer eller så) -för det är nog enklast av allt.
När det gäller handkodande finns exempelvis en hel del exempel på w3schools.
Några andra exempel hittar du på svenska, på idg's webstudio, där det finns en del kodexempel för bl.a. asp.net
Hade tänkt koda för hand men jag använder mig utav visual studio 2005 ibland..
Har lyckats koppla upp mig mot en databas och hämta information men då tog jag lite kod jag hittade någonstans och tror knappast det var bästa möjliga.
Dessutom så lyckades jag inte ha fler än 1 fungerande fråga mot databasen på sidan..
Ok detta har jag lyckats pilla ihop, säg vad jag gjort rätt/fel och hur jag kan förbättra det hela :)
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.Odbc" %>
<HTML>
<HEAD>
<SCRIPT Language="VB" Runat="server">
Dim sConString As String = ConfigurationSettings.AppSettings("sConnectionString")
Dim oConnection as ODBCConnection = new ODBCConnection(sConString)
Dim MySQL as String
Dim oDataAdapter as ODBCDataAdapter
Dim oDataSet as DataSet
Sub Page_Load(Source as object, e as EventArgs)
MySQL = "Insert into gb_posts (title, message) VALUES('apa', 'apa2222')"
oDataAdapter = New ODBCDataAdapter(MySQL, oConnection)
oDataSet = new DataSet()
oDataAdapter.Fill(oDataSet)
MySQL = "SELECT * FROM gb_posts"
oDataAdapter = New ODBCDataAdapter(MySQL, oConnection)
oDataSet = new DataSet()
oDataAdapter.Fill(oDataSet)
oDataGrid.DataSource = oDataSet
oDataGrid.DataBind()
End Sub
</SCRIPT >
</HEAD>
<BODY>
<ASP:DataGrid ID="oDataGrid" Runat="server" />
</BODY>
</HTML>
Varför försöka fylla ett dataset när inte sqlfrågan returnerar någonting (eftersom det är en insert)?
I det fallet är det bättre att använda en ODBCCommand istället för en ODBCDataAdapter.
Om man skulle skriva om koden med ovanstående förändringar blir det följande
MySQL = "Insert into gb_posts (title, message) VALUES ('apa', 'apa2222')"
Dim oCmd As New ODBCCommand(MySQL, oConnection)
oCmd.Connection.Open()
oCmd.ExecuteNonQuery()
oCmd.Connection.Close()
Där du hämtar ut alla posterna är det bra som det är.
Men eftersom du bara hämtar tillbaka en tabell kan du använda DataTable istället för DataSet. Liten prestandavinst.
Jag skulle även vilja lägga denna del av koden i en sub eller funktion och kalla på den där jag behöver använda den. Hur gör jag det?
Dim sConString As String = ConfigurationSettings.AppSettings("sConnectionString")
Dim oConnection as ODBCConnection = new ODBCConnection(sConString)
Dim MySQL as String
Dim oDataAdapter as ODBCDataAdapter
Dim oDataSet as DataSet
Här kan du skicka in sql:en och få tillbaka ett dataset med resultatet av sql-frågan. VB.NET
Public Function GetDataSet(ByVal MySql As String) As DataSet
Dim sConString As String = ConfigurationSettings.AppSettings("sConnectionString")
Dim oConnection as ODBCConnection = new ODBCConnection(sConString)
Dim oDataAdapter as New ODBCDataAdapter(MySql, oConnection)
Dim oDataSet as New DataSet
Try
oDataAdapter.Fill(oDataSet)
Catch (ex As Exception)
throw ex
End Try
oDataAdapter.Dispose()
oConnection.Dispose()
return oDataSet
End Function
C#
public DataSet GetDataSet(string MySql)
{
ODBCConnection oConnection = new ODBCConnection(ConfigurationSettings.AppSettings["sConnectionString"].ToString());
ODBCDataAdapter oDataAdapter = new ODBCDataAdapter(MySql, oConnection);
DataSet oDataSet = new DataSet();
try
{
oDataAdapter.Fill(oDataSet);
}
catch (Exception ex)
{
throw ex;
}
oDataAdapter.Dispose();
oConnection.Dispose();
return oDataSet;
}
Börja använda vs.net 05 hela tiden. Instansiera klassen du har GetDataSet i och anropa sedan metoden med din sqlfråga som inparameter. Skapa en klass som heter exempelvis DataBaseHelpers som du sedan lägger dina databasfunktioner i, om du inte hittar ett färdigt DAL (Data Access Layer) som du vill använda vill säga.