2013-11-28 53 views
1

我正在VS 2010中開發一個win-forms應用程序以檢索Sql ServerMySQL中的數據。無法將源類型'字符串'轉換爲目標類型'uint'錯誤c#

在這裏,我使用下面的GUI分配連接sting。

GUI Screenshot

以及添加或由以下函數修改目的地的MySQL的連接字符串。

private static void CreateDConnectionString(string server,string port, string dataBase, string userId, string password) 
    { 
     try 
     { 
      var connectionBuilder = new MySqlConnectionStringBuilder() 
      { 

       Server = server, 
       Port = port, 
       Database = dataBase, 
       UserID = userId, 
       Password = password 
      }; 
      //Open the app.config for modification 
      var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 
      //Retreive connection string setting 
      var connectionString = config.ConnectionStrings.ConnectionStrings["DConnection"]; 
      if (connectionString == null) 
      { 
       //Create connection string if it doesn't exist 
       config.ConnectionStrings.ConnectionStrings.Add(new ConnectionStringSettings 
       { 
        Name = "DConnection", 
        ConnectionString = connectionBuilder.ConnectionString, 
        ProviderName = "MySql.Data.MySqlClient" 
       }); 
      } 
      else 
      { 
       //Only modify the connection string if it does exist 
       connectionString.ConnectionString = connectionBuilder.ConnectionString; 
      } 
      //Save changes in the app.config 
      config.Save(ConfigurationSaveMode.Modified); 
     } 
     catch (Exception) 
     { 
      MessageBox.Show(@"Need to work on configration"); 
      throw; 
     } 
    } 

在對代碼

Port = port, 

我越來越不能轉換源類型string到目標類型uint

+0

只是注意固定的錯誤,這不是'unit',這是'UINT '。這意味着_Unsigned Integer_ – Vache

回答

2

因爲MySqlConnectionStringBuilder.Portuint(無符號整數)類型,您正試圖分配一個類型爲string的對象:這些類型不兼容,它們之間沒有隱式轉換。

您應首先驗證字符串是否可以轉換爲uint像這樣:

private static void CreateDConnectionString(string server,string port, string dataBase, string userId, string password) 
{ 
    uint portNumber; 
    if(! uint.TryParse(port, out portNumber)) 
    { 
     //unsuccessful parse, report error to the user 

     return; 
    } 

    //... 
} 

編輯:在代碼

1
Port = port, 

您需要將您的字符串端口轉換爲數據類型錯誤這個功能港口

Port = Convert.ToUInt32(port, 16); 
2

端口不接受字符串值。

它需要一個int

http://www.devart.com/dotconnect/mysql/docs/Devart.Data.MySql~Devart.Data.MySql.MySqlConnectionStringBuilder~Port.html

因此,無論它傳遞一個整數,或者使用Int32.Parse(port)

編輯:顯然違背了文件,它是一個UINT

Uint32.Parse(port) 
+0

嘗試用int現在它顯示'不能將源類型'int'轉換爲目標類型'unit'' –

+0

Uint是一個無符號整數(在這種情況下使用UInt32.Parse()) – Haedrian

相關問題