2015-11-19 3 views
0

Я пытаюсь получить время из своей базы данных.MySQL выберите сейчас()

string result; 
using (MySqlConnection connection = new MySqlConnection("Server=localhost;Database=database;Uid=root;Pwd='';")) 
{ 
    string sql = "select now()"; 
    MySqlCommand cmd = new MySqlCommand(sql, connection); 
    connection.Open(); 
    result = (string)cmd.ExecuteScalar(); 
    connection.Close(); 
} 
DateTime now = DateTime.ParseExact(result, "yyyy-MM-dd HH:mm:ss", null); 
metroLabel4.Text = (newtime); 

Это код, я использую, и когда я строю свою программу Это дает ошибку для result = (string)cmd.ExecuteScalar(); этой линии.

+1

Какая ошибка в точности? –

+0

@ SonerGönül http://prntscr.com/94f9nw – FlyingMadman

+0

Можете ли вы показать это как текст? –

ответ

0

Похоже, что MySQL Now() возвращает дату и время, и этот тип сопоставлен с DateTime в .NET side.

С ExecuteScalar возвращает object, вы можете явно направить его на DateTime, и все должно быть хорошо.

DateTime result; 
... 
result = (DateTime)cmd.ExecuteScalar(); 

Несколько вещей больше;

  • Используйте заявление using, чтобы распорядиться своей командой.
  • Поскольку вы используете инструкцию using, ваша линия connection.Close() не нужна. Это заявление автоматически закрывает ваше соединение.
  • Вам больше не нужен парсинг. Just assing DateTime now = result;
  • Непонятно, что такое newtime, но после этого вы можете назначить его как metroLabel4.Text = now.ToString() или независимо от того, что вы форматируете с перегрузкой ToString(string).
+0

Заключительный код и работающий действительно отлично http://prntscr.com/94fgol, если кому-то это понадобится, они могут использовать его благодаря вашей помощи. – FlyingMadman

+0

@Aytug Рад помочь. –

Смежные вопросы