MySql在Visual Studio 2012中不起作用:无法findtypes或名称空间名称“MySql”

鉴于此代码:

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; //Include mysql client namespace. using MySql.Data.MySqlClient; // That one doesn't work !!! using System.Configuration; namespace CSharpMySqlSample { public partial class frmMySqlSample : Form { //Read connection string from application settings file string ConnectionString = ConfigurationSettings.AppSettings["ConnectionString"]; MySqlConnection connection; MySqlDataAdapter adapter; DataTable DTItems; public frmMySqlSample() { InitializeComponent(); } private void frmMySqlSample_Load(object sender, EventArgs e) { //Initialize mysql connection connection = new MySqlConnection(ConnectionString); //Get all items in datatable DTItems = GetAllItems(); //Fill grid with items dataGridView1.DataSource = DTItems; } //Get all items from database into datatable DataTable GetAllItems() { try { //prepare query to get all records from items table string query = "select * from items"; //prepare adapter to run query adapter = new MySqlDataAdapter(query, connection); DataSet DS = new DataSet(); //get query results in dataset adapter.Fill(DS); // Set the UPDATE command and parameters. adapter.UpdateCommand = new MySqlCommand( "UPDATE items SET ItemName=@ItemName, Price=@Price, AvailableQuantity=@AvailableQuantity, Updated_Dt=NOW() WHERE ItemNumber=@ItemNumber;", connection); adapter.UpdateCommand.Parameters.Add("@ItemNumber", MySqlDbType.Int16, 4, "ItemNumber"); adapter.UpdateCommand.Parameters.Add("@ItemName", MySqlDbType.VarChar, 100, "ItemName"); adapter.UpdateCommand.Parameters.Add("@Price", MySqlDbType.Decimal, 10, "Price"); adapter.UpdateCommand.Parameters.Add("@AvailableQuantity", MySqlDbType.Int16, 11, "AvailableQuantity"); adapter.UpdateCommand.UpdatedRowSource = UpdateRowSource.None; // Set the INSERT command and parameter. adapter.InsertCommand = new MySqlCommand( "INSERT INTO items VALUES (@ItemNumber,@ItemName,@Price,@AvailableQuantity,NOW());", connection); adapter.InsertCommand.Parameters.Add("@ItemNumber", MySqlDbType.Int16, 4, "ItemNumber"); adapter.InsertCommand.Parameters.Add("@ItemName", MySqlDbType.VarChar, 100, "ItemName"); adapter.InsertCommand.Parameters.Add("@Price", MySqlDbType.Decimal, 10, "Price"); adapter.InsertCommand.Parameters.Add("@AvailableQuantity", MySqlDbType.Int16, 11, "AvailableQuantity"); adapter.InsertCommand.UpdatedRowSource = UpdateRowSource.None; // Set the DELETE command and parameter. adapter.DeleteCommand = new MySqlCommand( "DELETE FROM items " + "WHERE ItemNumber=@ItemNumber;", connection); adapter.DeleteCommand.Parameters.Add("@ItemNumber", MySqlDbType.Int16, 4, "ItemNumber"); adapter.DeleteCommand.UpdatedRowSource = UpdateRowSource.None; //return datatable with all records return DS.Tables[0]; } catch (Exception ex) { MessageBox.Show(ex.Message); } return null; } private void btnSave_Click(object sender, EventArgs e) { try { //Save records in database using DTItems which is datasource for Grid adapter.Update(DTItems); //Refresh grid DTItems = GetAllItems(); dataGridView1.DataSource = DTItems; MessageBox.Show("Items saved successfully..."); } catch(Exception ex) { MessageBox.Show(ex.Message); } } private void btnDelete_Click(object sender, EventArgs e) { if (dataGridView1.SelectedRows.Count > 0) { //Delete a row from grid first. dataGridView1.Rows.Remove(dataGridView1.SelectedRows[0]); //Save records again. This will delete record from database. adapter.Update(DTItems); //Refresh grid. Get items again from database and show it in grid. DTItems = GetAllItems(); dataGridView1.DataSource = DTItems; MessageBox.Show("Selected item deleted successfully..."); } else { MessageBox.Show("You must select entire row in order to delete it."); } } } } 

编译后我得到:

 error CS0246: The type or namespace name 'MySqlConnection' could not be found (are you missing a using directive or an assembly reference?) 

但是我检查了连接器: 在这里输入图像说明

它的安装

那么怎么了?

谢谢

你需要添加引用到MySql.Data.dll但最好是你可以添加这个dll作为包使用NuGet

下面是Package Manager Console命令

 PM> Install-Package MySql.Data 

将项目的引用也添加到MySql.Data.dll中。

using不会使程序集可用。 它只允许您使用名称空间中的条目,而不必每次指定该名称空间。

只是一个想法,

看起来你缺少你的项目中的MySql.Data,你可以在你的web.config中声明

确保你的web.config配置正确。

  <assemblyIdentity name="MySql.Data" publicKeyToken="c5687fc88969c44d" culture="neutral" /> <assemblyIdentity name="MySql.Web" publicKeyToken="c5687fc88969c44d" culture="neutral" /> 

您必须将其添加为参考

在这里输入图像说明

我们将在Connector / NET 6.5.5及更高版本的6.6.x版本中添加对VS 2012的支持http://forums.mysql.com/read.php?38,546265,564533#msg-564533

并给出一个链接来测试一个把戏

http://social.technet.microsoft.com/wiki/pt-br/contents/articles/10476.instalando-mysql-connector-no-visual-studio-2011-beta.aspx

参考这个答案

我的解决方案

转到项目 – >添加引用 – >扩展在这里添加MySql.Data和