29. januar 2006 - 13:12Der er
17 kommentarer og 1 løsning
Visual Studio 2005 og MySql
jeg kan skrive en connectionString til en MySql database, og få vist data på siden. Dim con As OdbcConnection = New OdbcConnection("DRIVER={MySQL};SERVER=mysql.xxxxx.dk;DATABASE=xxxxxx;UID=xxxxx;PWD=xxx;OPTION=1123") Denne connection skal jeg skrive på selve aspx siden. når jeg anvender en MSSQL server skrives connectionString i web.config filen og jeg kan anvende datagrid o.s.v. jeg får en hel masse foræret, som jeg har meget brug for. Hvordan kan jeg få de samme fordel når jeg er tvunget til at bruge en MySql database, eller er det overhovedet muligt. jeg har brugt meget lang tid på det, så jeg håber der er en der kan hjælpe mig.
Med kunstig intelligens skaber HP’s nye OmniBook X 14 en unik og skræddersyet brugeroplevelse målrettet dem, der ønsker høj ydeevne og intelligente funktioner
til en start ville det være en stor fordel for dig, hvis du benyttede denne her til at tilgå din mysql database med: http://dev.mysql.com/downloads/connector/net/1.0.html om du bruger den ene eller den anden database dikterer ikke noget omkring hvor du skal lægge din connectionstring, og det er helt normalt at lægge den i web.config som det eneste sted. du kan bruge de samme præsentationskomponenter (datagrid etc) uafhængigt at database. mvh
du kan bruge noget kode i denne stil for at hive data op fra en sql-server:
SqlConnection connection = new SqlConnection(<connectionstring>); SqlCommand selectCommand = new SqlCommand("select blah blah blah", connection); // hvis du bruger datasets SqlDataAdapter adapter = new SqlDataAdapter(selectCommand); DataSet ds = new DataSet(); adapter.Fill(ds);
// og til præsentation GridView grid = new GridView(); grid.DataSource = ds; grid.DataBind();
// og ind på formen med dit grid form1.Controls.Add(grid);
hvis du i ovenstående har lyst til at hente din data fra en mysql database, så opretter du en reference til den assembly du får installeret når du installere mysql connecter, og så bytter du Sql ud med MySql - så f.eks. den første linie bliver til:
MySqlConnection connection = new MySqlConnection(<connectionstring>);
har du lavet en reference til bemeldte assembly - kan du i vs2005 højreklikke på MySqlConnection og i den menu der kommer op trykker du så på resolve (hvilket giver dig 2 forskellige muligheder, som du frit kan vælge imellem).
der er med andre ord ikke nogen forskel på det der skal skrives om du bruger den ene eller anden database.
og... hvad var det du ikke kunne få til at virke med mysql connecter?
Hej Jeg starter med sidste spørgsmål I ServerExplore h-Klikker jeg på server og siger add server, eller jeg h-Klikker på ad Connectionstring. Ingen af delene kommer jeg igennem med. og når jeg ikke har fat i databasen, kan jeg ikke bruge sqlDataSource fra toolbox. Så det er det jeg spørger om hvor, skal jeg skrive ovenstående, skal det skrives på hver side, eller kan det skrives i web.config. Du må undskylde men jeg ved ikke mere om det. Så det første "så opretter du en reference til den assembly du får installeret når du installere mysql connecter" Det er sort snak for mig. Hvor begynder vi.
hvis du højreklikker på dit webprojekt i visual studio, kan du vælge add reference, hvilket bringer dig en dialogboks frem.
et af fanebladene i den dialogboks hedder browse, og hvis du klikker på det - får du mulighed for at pege på en dll-fil i dit filsystem. her skal du vælge den du har installeret fra mysql - standard placering vil være: C:\Program Files\MySQL\MySQL Connector Net 1.0.7\bin\.NET 2.0\MySql.Data.dll
dette gør - at du kan programmere imod den mysql-provideren, hvilket du gør ved at lave en using-statement i din codebehind:
using MySql.Data.MySqlClient;
hvorefter du kan skrive kode som den jeg viste.
hvis du laver en ny side - og trækker et gridview ind på den (og giver det id'et grid) - kan du skrive kode som nedenstående i din code-behind:
using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls;
using MySql.Data.MySqlClient;
public partial class MySqlPage : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { MySqlConnection connection = new MySqlConnection("Server=Server;Database=Test;Uid=UserName;Pwd=Pass;"); MySqlCommand selectCommand = new MySqlCommand("select blah blah blah", connection); MySqlDataAdapter adapter = new MySqlDataAdapter(selectCommand); DataSet ds = new DataSet(); adapter.Fill(ds);
grid.DataSource = ds; grid.DataBind(); } } }
kan du ikke se om du kan få det til at virke til at starte med.
husk at skifte den connectionstring ud med noget der passer hos dig + skift den selectcommand jeg har skrevet ud med noget der kan hente noget data hos dig.
Hej Det gik fint med at hente MySql.Data.dll Men så er der ikke mere der er gået godt vil man i VB bruge using? jeg har lavet en ny side og trukket gridwiew ind på den og givet den id'et Grid, den nye side ser sådan ud:
Partial Class _Default
Inherits System.Web.UI.Page
Protected Sub Grid_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Grid.SelectedIndexChanged
End Sub
Protected Sub SqlDataSource1_Selecting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.SqlDataSourceSelectingEventArgs) Handles SqlDataSource1.Selecting
End Sub
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not Page.IsPostBack Then MySqlConnection(connection = New MySqlConnection("Server=xxxxx.dk;Database=xxx;Uid=xxx;Pwd=xx;")) MySqlCommand selectCommand = New MySqlCommand(SELECT DepartmentID, Name FROM Department", connection) MySqlDataAdapter(Adapter = New MySqlDataAdapter(selectCommand)) Dim ds As New DataSet() Adapter.fill(ds) Grid.DataSource = ds Grid.DataBind() End If End Sub
End Class
første fejl er MySqlConnection hvor der står MySqlConnection is a type and can not be used as an ekspression Hvad skal jeg gøre ved det:) håber du gider. mvh
Dim connection As MySqlConnection = New MySqlConnection("...") Dim selectCommand As MySqlCommand = New MySqlCommand("SELECT DepartmentID, Name FROM Department", connection) Dim adapter As MySqlDataAdapter = New MySqlDataAdapter(selectCommand) Dim ds As DataSet = New DataSet adapter.Fill(ds) Grid.DataSource = ds Grid.DataBind
ÅÅ.. sådan, så blev det løst ved visning af siden i den rigtige verden får jeg følgende fejl: Both DataSource and DataSourceID are defined on 'Grid'. Remove one definition. Grid.DataBind()er markeret som fejl
Tak, det gør der nok men jeg skal lige fordøje det her, jeg gik sur i det for 2 år siden, og var lige ved at give op igen, så det er en stor dag for mig. tak
Synes godt om
Ny brugerNybegynder
Din løsning...
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.