Jag håller på lite att experimentera med en databaskoppling mellan ett C#-program och en mysql-server. Jag använder myODBC. Jag kan koppla upp mej mot databasen med denna kod: Denna artikeln innehåller det mesta du behöver veta. En ledtråd är att "myOdbcCommand.ExecuteNonQuery();" används när man inte får något resultat. Nåt i stil med Denna artikel... Jag har kommit en bit på väg nu men det krånglar fortfarande. Det ska inte vara såhär istället? Visst ska det vara det! Ettan tog jag från ett färdigt exempel men jag vet inte vad den parametern står för egentligen.Få svar ifrån mysql
// Open an ODBC connection
string MyConString = "DRIVER={MySQL ODBC 3.51 Driver};" +
"SERVER=localhost;" +
"DATABASE=ekonomi;" +
"UID=roland;" +
"PASSWORD=password;" +
"OPTION=3";
OdbcConnection MyConnection = new OdbcConnection(MyConString);
MyConnection.Open();
string myInsertQuery = "SELECT * FROM `shop`";
OdbcCommand myOdbcCommand = new OdbcCommand(myInsertQuery);
myOdbcCommand.Connection = MyConnection;
myOdbcCommand.ExecuteNonQuery();
// Var finns resultatet här?
MyConnection.Close();
Jag vill helt enkelt få en lista med strängar från fältet 'shop' i tabellen 'ekonomi'. Den här listan vill jag sen lägga in i en combobox. Men jag förstår bara inte hur man får tag i strängarna?
Sv: Få svar ifrån mysql
/JohanSv: Få svar ifrån mysql
string myInsertQuery = "SELECT shop FROM ekonomi;";
OdbcDataReader dr = myOdbcCommand.ExecuteReader();
using (dr)
{
while(dr.Read())
{
ComboBox1.Items.Add(dr["shop"].ToString());
}
}
/Andrec
Sv: Få svar ifrån mysql
http://www.pellesoft.se/area/articles/article.aspx?artid=364
Man glömmer visst Ctrl-V ibland... :)
/JohanSv:Få svar ifrån mysql
Första frågan, i artikeln pratar dom mycket om ADO.NET. Jag använder ODBC.NET som finns i .NET framework 1.1. Den ligger i sin tur ovanpå MySQL ODBC 3.51 drivrutinen som är ovanpå mysql.
Är ADO.NET ett annat gränssnitt mot databasen eller hur kommer det in i bilden? Både ODCB.NET och ADO.NET verkar ju tillhöra DOT.NET iaf.
Jag har lyckats få svar från mysql med detta programmet:
// Open an ODBC connection
string MyConString = "DRIVER={MySQL ODBC 3.51 Driver};" +
"SERVER=localhost;" +
"DATABASE=ekonomi;" +
"UID=roland;" +
"PASSWORD=rbsf00;" +
"OPTION=3";
OdbcConnection MyConnection = new OdbcConnection(MyConString);
OdbcCommand MyCommand = new OdbcCommand();
MyCommand.Connection = MyConnection;
OdbcDataReader MyDataReader;
MyConnection.Open();
// Read the account field
MyCommand.CommandText = "SELECT * FROM `account`";
MyDataReader = MyCommand.ExecuteReader();
while (MyDataReader.Read())
{
String pst = MyDataReader.GetString(1);
cmbAccount.Items.Add(pst); // cmbAccount är Comboboxen
}
MyDataReader.Close();
// Close the connection
MyConnection.Close();
account skapas på det här viset:
CREATE TABLE `account` (
`AccountID` int(10) unsigned NOT NULL auto_increment,
`AccountName` varchar(45) NOT NULL default '',
`AccountNumber` int(10) unsigned NOT NULL default '0',
`Amount` float NOT NULL default '0',
PRIMARY KEY (`AccountID`)
) TYPE=MyISAM;
Så jag tycker det är märkligt att "SELECT * FROM `account`" funkar. För det borde returnera en hel tabell med 4 kolumner. Jag är bara intresserad av AccountName så detta borde vara bättre:
"SELECT AccountName FROM `account`", men det går inte alls. Jag får en dialogbox där det står så här:
An unhandled exception of type 'System.IndexOutOfRangeException' occurred in system.data.dll
Additional information: Index was outside the bounds of the array.
Nån som har en rimlig förklaring på detta?
Jag har förresten provat alla SQL-kommandon i MySQL ControlCenter och dom fungerar som väntat bra där.
Sv: Få svar ifrån mysql
String pst = MyDataReader.GetString(0);
/JohanSv:Få svar ifrån mysql
Tack så mycket!