Помощь Я продолжаю получать эту ошибку, когда пытаюсь получить конкретные данные оценки в моей строке.В позиции 0 нет строки;
У меня есть эти данные в моей базе данных:
PlayerName Score
qwe 20
keith 0
У меня есть этот код в WinForm:
using (SqlConnection conn = new SqlConnection("Data Source=Rogue;Initial Catalog=SoftProject;Integrated Security=True"))
{
conn.Open();
try
{
String str1 = "";
using (SqlCommand cmd = new SqlCommand("Select PlayerName,Score from PlayerData where PlayerName = @player", conn))
{
cmd.Parameters.AddWithValue("@player", txtPlayer.Text);
DataTable dataTable= new DataTable();
dataTable.Load(cmd.ExecuteReader());
if(dataTable.Rows.Count>0)
{
// concatenate the two string and get the table score row
str1 = String.Concat(str1, (dataTable.Rows[0]["Score"].ToString()));
}
else
{
//Report error
}
}
conn.Close();
}
catch()
{
MessageBox.Show("No data");
}
}
В этом коде здесь, это держит моя система получает сообщение об ошибке:
str1 = String.Concat(str1, (dataTable.Rows[0]["Score"].ToString()));
получение имени и оценки «qwe» и «20» в порядке; , но во втором столбце «keith» и «0». Мой код flag меня к ошибке «Нет строки в позиции 0»;
Что, по-видимому, является проблемой метода string.concat()?
Это проблема 'datatable.Rows [0]' не строки .concat. Убедитесь, что ваш запрос возвращает данные в вашем datatable для имени «Keith» –
Это не проблема с этим методом. Ваш SQL-запрос просто не возвращает никаких данных, поэтому у вас нет строк в таблице. Кроме того, если вы просто загружаете данные из базы данных, не используйте 'DataTable', это очень неэффективно. Просто используйте 'IDataReader'. –
или использовать метод .Fill или проверить ссылку MSDN для метода [DataTable.Load] (https://msdn.microsoft.com/en-us/library/hsze9wte (VS.80) .aspx) – MethodMan