鉴于此代码:
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
并给出一个链接来测试一个把戏
参考这个答案
我的解决方案
转到项目 – >添加引用 – >扩展在这里添加MySql.Data和