2011-06-13 4 views
2

Je crée une base de données SQL Server CE par programme (n'utilisant pas entity ou LINQ). Actuellement, j'introduis les instructions SQL dans le code source, mais je voudrais éviter cela si possible.SQL Server CE + fichier SQL externe

Existe-t-il un moyen d'avoir simplement un fichier .sql externe que je pourrais lire et exécuter à l'aide de classes SQL Server CE?

Edité pour plus de clarté **

Je travaille sur l'hypothèse selon laquelle il existe une méthode dans une classe de CE SQL Server qui me permettra simplement d'exécuter le fichier sql. Donc, quelque chose comme: command.executeSqlFile (nom de fichier).

La raison en est que je construis une application de test dans laquelle la base de données sql server ce devra être créée et recréée tout au long de l'utilisation de l'application. Je ne veux pas vraiment coder en dur SQL - il serait beaucoup plus facile pour moi d'avoir juste un fichier sql externe avec:

... 
CREATE TABLE TEST(col1 int, col2 int, col3 int); 
INSERT INTO test (col1,col2,col3) VALUES (11, 22, 33); 
... 

Encore une fois, je pouvais lire facilement ce avec les classes IO, juste se demandant s'il y a une manière plus propre (en utilisant seulement les classes System.Data & System.Data.SqlServerCE) de le faire.

Merci!

+0

Si vous pouvez le nourrir avec des chaînes codées en dur, alors vous pouvez le faire de la même manière que les chaînes lues à partir d'un fichier texte, n'est-ce pas? (Ou ai-je manqué quelque chose?) – Rup

+0

Y a-t-il une raison pour laquelle vous ne pouvez pas précréer les fichiers .SDF et les inclure dans votre projet? –

+0

Je peux certainement le faire de cette façon, mais j'espérais qu'il y aurait une méthode ado.net ou une classe qui me permettrait de simplement consommer un fichier .sql au lieu d'impliquer des classes IO. – bambino

Répondre

0

Comme Rup mentionné dans le commentaire, vous devriez être capable de lire les données d'un fichier texte que vous créez. Vous pouvez le faire de plusieurs manières, y compris des fichiers distincts pour chaque instruction .sql ou un fichier volumineux.

Je voudrais mettre en garde que cela pourrait aussi être un risque pour la sécurité. Quelqu'un pourrait facilement modifier ces fichiers et faire des choses malveillantes à votre base de données. Veillez à ne pas stocker les informations d'identification en texte brut dans ces fichiers. Vous pouvez envisager de crypter vos fichiers de données externes.

0

Ou vous pouvez simplement créer un fichier CE séparé qui contient un tableau d'instructions SQL qui peuvent facilement être conservées dans l'application ou même séparément. De cette façon, vous ouvrez la base de données d'instructions, appelez la "procédure" souhaitée, tirez le texte, fermez-le, ouvrez la base de données réelle et utilisez le résultat de la première requête pour l'exécuter sur la base de données réelle. Bien sûr, vous serez limité aux 4000 caractères par domaine, mais c'est un peu en soi. Si vous avez besoin de plus, combinez plusieurs ensemble.