Это мой первый пост здесь. Мне нужна помощь о том, как разрешить передачу данных из базы данных Microsoft Access в MySQL, используя c # на виртуальной студии.Причина, по которой я использую c #, а не параметр макроса, заключается в предпочтениях моей компании.Прошу прощения, если мой код грязный, и я знаю, что мне нужно его улучшить.Большую часть кода я взял с другого сайта.
Есть ли способ заставить его работать?Я в основном пытаюсь отладить его, и когда он запускается, данные не поступают в рабочую среду MySQL
Спасибо за любую помощь и рекомендации
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Windows.Forms;
using System.Data.OleDb;
using MySql.Data.MySqlClient;
using System.Configuration;
namespace DatabaseMsAccesstoSql
{
public partial class Form1 : Form
{
public string backupFile;
public DataTable dt1;
public string sqlcomm;
private OleDbConnection myConn = new OleDbConnection();
private DataSet ds;
public Form1()
{
InitializeComponent();
DataTable dt_Data = ReadDataFromAccess();
InsertDatatoTable(dt_Data);
}
private DataTable ReadDataFromAccess()
{
try
{
OleDbConnection conn;
OleDbDataAdapter adapter1;
conn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source= C:\\Users\\Administrator\\Desktop\\Microsoft Access File\\Inventory Management System.accdb ; Jet OLEDB:Database Password =123456789");
dt1 = new DataTable();
conn.Open();
//Database have been connected
//Checking data in the Microsoft Access
sqlcomm = "SELECT* FROM Inventory_Management ";
adapter1 = new OleDbDataAdapter(sqlcomm, conn);
OleDbCommandBuilder builder = new OleDbCommandBuilder(adapter1);
dt1.Reset();
adapter1.Fill(dt1);
if (dt1.Rows.Count > 0)
{
DataTable dt_Tbl = new DataTable();
dt_Tbl.Columns.Add("Product_Name");
dt_Tbl.Columns.Add("Product_ID");
dt_Tbl.Columns.Add("Product_Category");
dt_Tbl.Columns.Add("Quantity");
dt_Tbl.Columns.Add("Location");
dt_Tbl.Columns.Add("Manufacturer");
dt_Tbl.Columns.Add("Remark");
dt_Tbl.Columns.Add("QR_Code");
dt_Tbl.Columns.Add("Description");
dt_Tbl.Columns.Add("MinQuantity");
dt_Tbl.Columns.Add("Color_Type");
dt_Tbl.Columns.Add("Owner");
dt_Tbl.Columns.Add("Project _Name");
for (int i = 0; i < dt1.Rows.Count; i++)
{
List<string> list = new List<string>();
DataRow r = dt1.Rows[i];
DataRow dr;
dr = dt_Tbl.NewRow();
dr = r;
dt_Tbl.Rows.Add(dr);
//string crd = r["Product_Name"].ToString();
//list.Add(r["Product_ID"].ToString());
//list.Add(r["Product_Category"].ToString());
//list.Add(r["Quantity"].ToString());
//list.Add(r["Location"].ToString());
//list.Add(r["Manufacturer"].ToString());
//list.Add(r["Remark"].ToString());
//list.Add(r["QR_Code"].ToString());
//list.Add(r["Description"].ToString());
//list.Add(r["MinQuantity"].ToString());
//list.Add(r["Color_Type"].ToString());
//list.Add(r["Owner"].ToString());
//list.Add(r["Project _Name"].ToString());
}
conn.Close();
return dt_Tbl;
}
else
return null;
}
catch (Exception ex)
{
return null;
}
}
private void InsertDatatoTable(DataTable dt_Tbl)
{
MySqlConnection mConnection = null;
try
{
string currenttime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
/**** JUJU : MODIFY to your table columns ****/
StringBuilder sCommand = new StringBuilder("REPLACE INTO inventorysystem(Product_Name,Product_ID,Product_Category,Quantity,Location,Manufacturer,Remark,QR_Code,Description,MinQuantity,Color_Type,Owner,Project_Name) VALUES ");
using (mConnection = new MySqlConnection(ConfigurationManager.ConnectionStrings["Data_store"].ToString())) //"C:\\ProgramData\\MySQL\\MySQLServer9.0\\Data\\"))
{
List<string> Rows = new List<string>();
for (int i = 0; i < dt_Tbl.Rows.Count; i++)
{
Rows.Add(string.Format("('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}')", dt_Tbl.Rows[i][0].ToString(), dt_Tbl.Rows[i][1].ToString(), dt_Tbl.Rows[i][2].ToString(), dt_Tbl.Rows[i][3].ToString(), dt_Tbl.Rows[i][4].ToString(), dt_Tbl.Rows[i][5].ToString(),
dt_Tbl.Rows[i][6].ToString(), dt_Tbl.Rows[i][7].ToString(), dt_Tbl.Rows[i][8].ToString(), dt_Tbl.Rows[i][9].ToString(), dt_Tbl.Rows[i][10].ToString(), dt_Tbl.Rows[i][11].ToString(), dt_Tbl.Rows[i][12].ToString(), currenttime));
}
sCommand.Append(string.Join(",", Rows));
sCommand.Append(";");
mConnection.Open();
using (MySqlCommand myCmd = new MySqlCommand(sCommand.ToString(), mConnection))
{
myCmd.CommandType = CommandType.Text;
myCmd.ExecuteNonQuery();
}
//cmd.ExecuteNonQuery();
}
}
catch (Exception e)
{
return;
}
finally
{
mConnection.Close();
}
}
//private void Form1_Load(object sender, EventArgs e)
//{
// try
// {
// myConn.Open();
// checkconnection.Text = "Connection Successful";
// //DataSet dtSet = new DataSet();
// myConn.Close();
// }
// catch (Exception ex)
// {
// MessageBox.Show("Error " + ex);
// }
//}
private void button1_Click(object sender, EventArgs e)
{
try
{
myConn.Open();
OleDbCommand command = new OleDbCommand();
command.Connection = myConn;
string query = "SELECT * from Inventory_Management";
command.CommandText = query;
OleDbDataAdapter da = new OleDbDataAdapter(command);
DataTable dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt;
}
catch
{
}
}
}
}