Comment puis-je me connecter à un SDF de la base de données? Pas de chaîne de connexion j'essaie semble fonctionner
J'ai essayé littéralement 50+ différentes tentatives de ma chaîne de connexion à ma base de données locale et rien ne semble fonctionner. Je suis essentiellement juste essayer d'ouvrir une connexion à la base de données de fichier afin que je puisse dump dans les données que j'ai sorti de ma feuille de calcul excel. Je suis à l'aide de Visual C# hors connexion d'une application winform.
N'importe quelle chaîne de connexion, j'essaie dans mon application.config, il échoue toujours lorsqu'il tente d'écrire "dReader" à la base de données.
L'erreur est généralement cette fonction sur quelle chaîne je tente:
"Liée au réseau ou spécifique à l'instance erreur s'est produite lors de l'établissement d'une connexion à SQL Server. Le serveur n'a pas été trouvé ou n'est pas accessible. Vérifiez que le nom de l'instance est correct et que SQL Server est configuré pour autoriser les connexions à distance. (fournisseur: Fournisseur de canaux Nommés, erreur: 40 - impossible d'ouvrir une connexion à SQL Server)"
Je suis passé par de nombreux exemples en ligne et de ressources, et aucune ne semble fonctionner. J'espère que quelqu'un ici peut rappeler pourquoi il ne fonctionne pas.
Ici est l'une de mes applications.config dans sa forme la plus récente:
<connectionStrings>
<add name="DDP_Project.Properties.Settings.DDP_DatabaseConnectionString"
connectionString="Data Source=E:\Other DDP Projects\DDP_Project_SDF\DDP_Project\DDP_Database.sdf;"
providerName="Microsoft.SqlServerCe.Client.3.5" />
</connectionStrings>
Voici mon code du formulaire:
private void Profiles_Click(object sender, EventArgs e)
{
profilesDialog.FileName = "[YOUR_UPLOAD_FILE_HERE]";
var result = profilesDialog.ShowDialog();
if (result == DialogResult.OK)
{
HandleFileSelection();
}
}
private void HandleFileSelection()
{
var file = profilesDialog.FileName;
//Create a connection to the file datafile.sdf in the program folder
string dbfile = new System.IO.FileInfo(System.Reflection.Assembly.GetExecutingAssembly().Location).DirectoryName + "\\DDP_Database.sdf";
SqlCeConnection connection = new SqlCeConnection("datasource=" + dbfile);
string strConnection = ConfigurationManager.ConnectionStrings["DDP_Project.Properties.Settings.DDP_DatabaseConnectionString"].ConnectionString;
//Create connection string to Excel work book
string excelConnectionString = string.Format(
@"Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=""{0}"";
Extended Properties=""Excel 8.0;HDR=YES;""", file
);
//Create Connection to Excel work book
OleDbConnection excelConnection = new OleDbConnection(excelConnectionString);
OleDbCommand cmd = new OleDbCommand("SELECT [ID],[STATUS],[FAN_NUM],[PROFILE_NAME],[DESTINATION_HOST],[USER_ID],[USER_PASSWORD],[PROTOCOL],[PORT],[PATH],[CONTACT_NAME],[CONTACT_EMAIL],[CONTACT_PHONE],[CONTACT_ALT_PHONE],[CONTACT_CITY],[CONTACT_STATE],[CONTACT_CONTACT_TIME] FROM [Sheet1$]", excelConnection);
excelConnection.Open();
OleDbDataReader dReader;
dReader = cmd.ExecuteReader();
SqlBulkCopy sqlBulk = new SqlBulkCopy(strConnection);
sqlBulk.DestinationTableName = "Profiles";
sqlBulk.ColumnMappings.Add("ID", "ID");
sqlBulk.ColumnMappings.Add("STATUS", "STATUS");
sqlBulk.ColumnMappings.Add("FAN_NUM", "FAN_NUM");
sqlBulk.ColumnMappings.Add("PROFILE_NAME", "PROFILE_NAME");
sqlBulk.ColumnMappings.Add("DESTINATION_HOST", "DESTINATION_HOST");
sqlBulk.ColumnMappings.Add("USER_ID", "USER_ID");
sqlBulk.ColumnMappings.Add("USER_PASSWORD", "USER_PASSWORD");
sqlBulk.ColumnMappings.Add("PROTOCOL", "PROTOCOL");
sqlBulk.ColumnMappings.Add("PORT", "PORT");
sqlBulk.ColumnMappings.Add("PATH", "PATH");
sqlBulk.ColumnMappings.Add("CONTACT_NAME", "CONTACT_NAME");
sqlBulk.ColumnMappings.Add("CONTACT_EMAIL", "CONTACT_EMAIL");
sqlBulk.ColumnMappings.Add("CONTACT_PHONE", "CONTACT_PHONE");
sqlBulk.ColumnMappings.Add("CONTACT_ALT_PHONE", "CONTACT_ALT_PHONE");
sqlBulk.ColumnMappings.Add("CONTACT_CITY", "CONTACT_CITY");
sqlBulk.ColumnMappings.Add("CONTACT_STATE", "CONTACT_STATE");
sqlBulk.ColumnMappings.Add("CONTACT_CONTACT_TIME", "CONTACT_CONTACT_TIME");
sqlBulk.WriteToServer(dReader);
sqlBulk.Close();
excelConnection.Close();
}
private void profilesDialog_FileOk(object sender, EventArgs e)
{
}
}
}
Si SQL Server Compact peut être utilisé uniquement avec une instance de SQL server? Je pensais que c'était de plus en plus autonomes, un remplacement pour l'Accès. Suis-je tort?
OriginalL'auteur JoshG | 2011-04-20
Vous devez vous connecter pour publier un commentaire.
...
Première:
Créer d'abord une méthode de test qui vous pouvez vérifier si vous pouvez vous connecter à sqlcedatabase.
Deuxième:
Il suffit de Charger votre fichier excel des Données dans une Table de données et l'utilisation de foreach, puis enregistrez-le sur votre sql ce fichier de base de données..
Ce qui concerne
OriginalL'auteur Crimsonland
Je pense que le problème que vous rencontrez est que vous essayez d'utiliser une occurrence de SqlConnection pour se connecter à SQL base de données plus Compacte. L' .le sdf est un compact de base de données et vous devez utiliser le SqlCeConnection pour vous y connecter. La création de la connexion à l'aide de ce mais alors vous ne l'utilisez pas. Au lieu de cela vous passer dans la chaîne de connexion à la SqlBulkCopy objet qui crée implicitement une occurrence de SqlConnection de cette chaîne. Je suppose que c'est sur cette ligne où vous êtes l'obtention de l'erreur. Si vous remarquez l'espace de noms de la SqlBulkCopy est Système.Les données.SqlClient. La raison pour laquelle vous voyez l'erreur, c'est que son essaient de passer par SQL Server pour effectuer la connexion et ne peut pas résoudre votre chaîne de connexion à une base de données SQL Server. Malheureusement, je ne pense pas que le Système.Les données.SqlServerCe a l'équivalent de la SqlBulkCopy. Coller à l'aide de classes dans le Système.Les données.SqlServerCe et les choses devraient fonctionner comme prévu. Vous aurez tout à fait le travail plus manuel de la mode.
OriginalL'auteur Craig Suchanec
Selon cette post, SqlBulkCopy n'est pas pris en charge avec SqlCe.
OriginalL'auteur WarrenG