我正在處理一個C#項目,我面臨一個問題。該程序允許用戶連接到MySQL數據庫並從每個選定的表中檢索信息並將數據寫入文件。問題是因爲我不知道模式將會是什麼樣或者它將包含什麼值。如果timestamp列包含日期0000-00-00 00:00:00我得到了轉換錯誤,無論我嘗試什麼,它都無法工作。我試圖轉換爲字符串我試圖轉換爲DateTime,但我總是得到錯誤。無法將MySQL.DateTime轉換爲System.DateTime與0000-00-00 00:00:00值
下面是如何我目前正在試圖獲取數據:
using (ConnectMySQLDB db = new ConnectMySQLDB(databaseSettings))
{
string query = string.Format("SELECT * FROM {0}.{1}", database, table);
Console.WriteLine("Query: {0}", query);
using (MySqlCommand cmd = new MySqlCommand(query, db.conn))
{
using (MySqlDataReader reader = cmd.ExecuteReader())
{
int i = 1;
while (reader.Read())
{
Console.WriteLine("ID: {0}", i);
fieldsAndValues = new Dictionary<string, string>();
foreach (ColumnDataTypes fieldAndType in fieldsAndTypes)
{
Console.WriteLine("Column: {0} Type: {1}", fieldAndType.field, fieldAndType.dataType);
string formattedValue = "";
if (fieldAndType.dataType == "timestamp")
{
DateTime date = DateTime.Parse(reader.GetDateTime(fieldAndType.field).ToString());
formattedValue = date.ToString("yyyyMMdd");
}
else
{
formattedValue = getDBFormattedValue(reader.GetString(fieldAndType.field), fieldAndType.dataType);
fieldsAndValues.Add(fieldAndType.field, formattedValue);
}
}
rows.Add(fieldsAndValues);
i++;
}
}
}
}
我還添加了允許零日期和convertzerodate在連接字符串爲null選項,如下所示:
connString = "server=" + server + ";uid=" + username + ";pwd=" + password + ";port=" + port + ";Allow Zero Datetime=true;zeroDateTimeBehavior=convertToNull;Convert Zero Datetime=true";
任何幫助將不勝感激。
感謝
爲什麼要將DateTime轉換爲字符串,然後再解析它?當然,你只會希望它返回與它開始相同的DateTime。 –
另外,你還沒有告訴我們究竟發生了什麼。你說你得到了「錯誤」,但沒有說出那個錯誤是什麼。 –
順便說一句,你使用了哪個MySQL連接器?我見過的關於這些連接字符串選項的所有內容都表明它適用於Java驅動程序。你確定你正在使用的驅動程序支持它們嗎? –