use*_*212 -1 c# mysql sql ado.net
我试图从具有2行的MYSQL表中检索数据,但只返回第一行.使用的SQL语句非常简单sqlQuery ="SELECT*FROM table"
使用下面的代码只返回找到的第一个值
private ArrayList dbRead(String sqlQuery, String classQuery)
{
ArrayList dbCategoryResults = new ArrayList();
// *** CONNECT TO DATABASE
Console.WriteLine("** Database Connection: Connecting to database");
MySqlConnection dbConnection = new MySqlConnection(dbStringConnection);
try
{
dbConnection.Open();
Console.WriteLine("** Database Connection: Connected to database server");
// *** READ FROM DATABASE
MySqlCommand command = new MySqlCommand(sqlQuery, dbConnection);
MySqlDataReader dataReader = command.ExecuteReader();
if (dataReader.Read())
{
if (classQuery == "categories")
{
//String det = dataReader[1].ToString();
dbCategoryResults.Add(dataReader[1]);
Console.WriteLine("Found " + dbCategoryResults.Count);
return dbCategoryResults;
}
}
dataReader.Close();
command.Dispose();
dbConnection.Close();
}
catch (MySqlException e)
{
Console.WriteLine(e.ToString());
MessageBox.Show(e.Message, "Database Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
// CLOSE DATABASE
try
{
dbConnection.Close();
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
它很简单
// Always call Read before accessing data.
// Advances the MySqlDataReader to the next record.
// returns true if it finds a record
while (dataReader.Read())
{
// depending on your query
Console.WriteLine(myReader.GetInt32(0) + ", " + myReader.GetString(1));
}
Run Code Online (Sandbox Code Playgroud)
如果你想要行数,你总是可以使用一个DataTable甚至只是在while循环中使用一个计数.DataTable示例:
DataTable dt = new DataTable();
dt.Load(reader);
Console.WriteLine("Rows returned : " + dt.Rows.Count);
foreach(DataRow dr in dt.Rows)
{
Console.WriteLine(dr["SomeResultingColumn"]);
}
Run Code Online (Sandbox Code Playgroud)