Transfert BDD ACCESS to SQL SERVER
Bonjour,
j'aimerais réaliser le transfert de donnée provenant d'une base ACCESS a une base SQL SERVER.
Pour cela , j'utilise un dataset ainsi que 2 dataAdapter (oSqlDataAdapter pour SQL SERVER et oACSDataAdapter pour ACCESS).
j'arrive a recuperer les données contenu dans une table que j'ai choisi arbitrairement (le table ChampsComplementaires_locale de la BDD ACCESS).
je tiens a preciser que ma BDD SQL contient déjà la table nommé "ChampsComplementaires".
Mon probleme arrive apres , lorsque j'effectue la requette insert pour inserer les données dans la BDD SQL. ma requete est la suivante :
"SET IDENTITY_INSERT ChampsComplementaires ON INSERT INTO ChampsComplementaires (IdChamp,Libelle,FenetreIdentite) VALUES(@IdChamp,@Libelle,@FenetreIdentite) SET IDENTITY_INSERT ChampsComplementaires OFF"
je vous link mon code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195
|
//-----------------------------------------------------------------------------------------------------------------
//------------------------------------------------ ACCESS -------------------------------------------------
//-------------- CONNEXION --------------
// Chaine de connexion
string connectString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\n.sebille\Desktop\MYLARO\MYLARO\MYLARO.accdb;
Jet OLEDB:Database Password=1234";
// Objet connection
OleDbConnection connection = new OleDbConnection(connectString);
//requeteSelectAccess
string requeteSelectAccess = "SELECT * FROM ChampsComplementaires_locale";
//---------------------------------------
//Ouverture de connexion ACCESS
connection.Open();
//-----------------------------------------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------------------------------------
//---------------------------------------------- SQL SERVER -----------------------------------------------
//-------------------- CONNEXION --------------------
// Chaine de connexion
string connectStringSQL = @"Data Source=prt-jcb\sqlexpress ;Integrated Security=SSPI;"
+ "Initial Catalog=SQLVIDE";
// Objet connectionSQL
SqlConnection connectionSQL = new SqlConnection(connectStringSQL);
//Ouverture connexion
connectionSQL.Open();
string requeteSQL = "Select * from ChampsComplementaires";
string requeteACS = "Select * from ChampsComplementaires_locale";
SqlDataAdapter oSqlDataAdapter = new SqlDataAdapter(requeteSQL, connectionSQL);
OleDbDataAdapter oACSDataAdapter = new OleDbDataAdapter (requeteACS , connection);
DataSet oDataSet = new DataSet("ChampsComplementaires_locale");
oSqlDataAdapter.Fill(oDataSet, "ChampsComplementaires");
oACSDataAdapter.Fill(oDataSet, "ChampsComplementaires_locale");
string RequeteSqlInsert = "SET IDENTITY_INSERT ChampsComplementaires ON INSERT INTO ChampsComplementaires (IdChamp,Libelle,FenetreIdentite) VALUES(@IdChamp,@Libelle,@FenetreIdentite) SET IDENTITY_INSERT ChampsComplementaires OFF";
SqlDbType valRetour = new SqlDbType();
for (int h = 0; h < 1; h++)
{
if (oDataSet.Tables["ChampsComplementaires_locale"].Columns[h].DataType.ToString() == "System.Int16")
{
valRetour = SqlDbType.SmallInt;
}
else if (oDataSet.Tables["ChampsComplementaires_locale"].Columns[h].DataType.ToString() == "System.Int32")
{
valRetour = SqlDbType.Int;
}
else if (oDataSet.Tables["ChampsComplementaires_locale"].Columns[h].DataType.ToString() == "System.Int64")
{
valRetour = SqlDbType.BigInt;
}
if (oDataSet.Tables["ChampsComplementaires_locale"].Columns[h].DataType.ToString() == "System.String")
{
valRetour = SqlDbType.NVarChar;
}
else if (oDataSet.Tables["ChampsComplementaires_locale"].Columns[h].DataType.ToString() == "System.Boolean")
{
valRetour = SqlDbType.Bit;
}
else if (oDataSet.Tables["ChampsComplementaires_locale"].Columns[h].DataType.ToString() == "System.Bool")
{
valRetour = SqlDbType.Bit;
}
else if (oDataSet.Tables["ChampsComplementaires_locale"].Columns[h].DataType.ToString() == "System.Date")
{
valRetour = SqlDbType.Date;
}
else if (oDataSet.Tables["ChampsComplementaires_locale"].Columns[h].DataType.ToString() == "System.DateTime")
{
valRetour = SqlDbType.DateTime2;
}
else if (oDataSet.Tables["ChampsComplementaires_locale"].Columns[h].DataType.ToString() == "System.Char")
{
valRetour = SqlDbType.Char;
}
else if (oDataSet.Tables["ChampsComplementaires_locale"].Columns[h].DataType.ToString() == "System.Decimal")
{
valRetour = SqlDbType.Decimal;
}
else if (oDataSet.Tables["ChampsComplementaires_locale"].Columns[h].DataType.ToString() == "System.Double")
{
valRetour = SqlDbType.Float;
}
else if (oDataSet.Tables["ChampsComplementaires_locale"].Columns[h].DataType.ToString() == "System.Single")
{
valRetour = SqlDbType.Real;
}
else if (oDataSet.Tables["ChampsComplementaires_locale"].Columns[h].DataType.ToString() == "System.Guid")
{
valRetour = SqlDbType.UniqueIdentifier;
}
else if (oDataSet.Tables["ChampsComplementaires_locale"].Columns[h].DataType.ToString() == "System.Binary")
{
valRetour = SqlDbType.Binary;
} SqlDbType valRetour = new SqlDbType();
for (int h = 0; h < 1; h++)
{
if (oDataSet.Tables["ChampsComplementaires_locale"].Columns[h].DataType.ToString() == "System.Int16")
{
valRetour = SqlDbType.SmallInt;
}
else if (oDataSet.Tables["ChampsComplementaires_locale"].Columns[h].DataType.ToString() == "System.Int32")
{
valRetour = SqlDbType.Int;
}
else if (oDataSet.Tables["ChampsComplementaires_locale"].Columns[h].DataType.ToString() == "System.Int64")
{
valRetour = SqlDbType.BigInt;
}
if (oDataSet.Tables["ChampsComplementaires_locale"].Columns[h].DataType.ToString() == "System.String")
{
valRetour = SqlDbType.NVarChar;
}
else if (oDataSet.Tables["ChampsComplementaires_locale"].Columns[h].DataType.ToString() == "System.Boolean")
{
valRetour = SqlDbType.Bit;
}
else if (oDataSet.Tables["ChampsComplementaires_locale"].Columns[h].DataType.ToString() == "System.Bool")
{
valRetour = SqlDbType.Bit;
}
else if (oDataSet.Tables["ChampsComplementaires_locale"].Columns[h].DataType.ToString() == "System.Date")
{
valRetour = SqlDbType.Date;
}
else if (oDataSet.Tables["ChampsComplementaires_locale"].Columns[h].DataType.ToString() == "System.DateTime")
{
valRetour = SqlDbType.DateTime2;
}
else if (oDataSet.Tables["ChampsComplementaires_locale"].Columns[h].DataType.ToString() == "System.Char")
{
valRetour = SqlDbType.Char;
}
else if (oDataSet.Tables["ChampsComplementaires_locale"].Columns[h].DataType.ToString() == "System.Decimal")
{
valRetour = SqlDbType.Decimal;
}
else if (oDataSet.Tables["ChampsComplementaires_locale"].Columns[h].DataType.ToString() == "System.Double")
{
valRetour = SqlDbType.Float;
}
else if (oDataSet.Tables["ChampsComplementaires_locale"].Columns[h].DataType.ToString() == "System.Single")
{
valRetour = SqlDbType.Real;
}
else if (oDataSet.Tables["ChampsComplementaires_locale"].Columns[h].DataType.ToString() == "System.Guid")
{
valRetour = SqlDbType.UniqueIdentifier;
}
else if (oDataSet.Tables["ChampsComplementaires_locale"].Columns[h].DataType.ToString() == "System.Binary")
{
valRetour = SqlDbType.Binary;
}
oSqlDataAdapter.InsertCommand = new SqlCommand(RequeteSqlInsert, connectionSQL);
for (int h = 0; h < oDataSet.Tables["ChampsComplementaires_locale"].Columns.Count; h++)
{
oSqlDataAdapter.InsertCommand.Parameters.Add("@" + oDataSet.Tables["ChampsComplementaires_locale"].Columns[h].ColumnName,
valRetour, oDataSet.Tables["ChampsComplementaires_locale"].Rows.Count, oDataSet.Tables["ChampsComplementaires_locale"].Columns[h].ColumnName);
}
DataRow oDataRow ;
oDataRow = oDataSet.Tables["ChampsComplementaires"].NewRow();
for (int h = 0; h < oDataSet.Tables["ChampsComplementaires_locale"].Columns.Count; h++)
{
oDataRow[oDataSet.Tables["ChampsComplementaires"].ColumnName]= oDataSet.Tables["ChampsComplementaires_locale"].Rows[h][0];
}
oSqlDataAdapter.Update(oDataSet, "ChampsComplementaires");
oDataSet.Clear();
oSqlDataAdapter.Fill(oDataSet, "ChampsComplementaires");
for (int i = 0; i < oDataSet.Tables["ChampsComplementaires"].Rows.Count; i++)
{
Console.WriteLine("\t{0}\t{1}", oDataSet.Tables["ChampsComplementaires"].Rows[i][0].ToString(), oDataSet.Tables["ChampsComplementaires"].Rows[i][1].ToString());
}
connection.Close();
connectionSQL.Close();
Console.Read(); |
Mon Erreur arrive lorsque je veut faire le UPDATE ( oSqlDataAdapter.Update(oDataSet, "ChampsComplementaires");), l'erreur suivante surgit :
"L'exception System.Data.SqlClient.SqlException n'a pas été gérée
Message=Syntaxe incorrecte vers 'int'.
La variable scalaire "@IdChamp" doit être déclarée."
Si quelqu'un pourrais m'aider je suis en pâtauge totale... Je tien aussi a preciser que j'ai reussi a inserer des donnée en les tapant manuellement mais que j'essaye de rendre le tout automatique ..
Merci d'avance !