2011-06-13 42 views
2

我以编程方式创建SQL Server CE数据库(不使用实体或LINQ)。目前我正在将SQL语句嵌入到源代码中,但如果可能的话,我想避免这种情况。SQL Server CE +外部SQL文件

有没有一种方法可以简单地拥有一个外部.sql文件,我可以使用SQL Server CE类读取和执行?

编辑的清晰度 **

我的工作,前提是有一些的SQL Server CE类,只会让我执行.sql文件的方法。所以像:command.executeSqlFile(文件名)。

原因是我正在构建一个测试应用程序,其中sql server ce数据库将需要在整个应用程序的使用过程中创建并重新创建。我真的不希望硬编码的SQL - 这将使它更容易,我只是有一个外部.sql文件:

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

同样,我可以很容易地与IO类阅读,只需想知道是否有更干净的方法(只使用System.Data & System.Data.SqlServerCE类)。

谢谢!

+0

如果你可以喂它硬编码的字符串,那么你可以喂它的字符串从文本文件中读取相同的方式,不是吗? (或者我错过了什么吗?) – Rup 2011-06-13 16:48:21

+0

是否有理由不能预先创建.SDF文件并将其包含在项目中? – 2011-06-13 17:45:08

+0

我绝对可以这样做,但我希望有一个ado.net方法或类允许我简单地使用.sql文件而不是涉及IO类。 – bambino 2011-06-13 23:23:02

回答

0

由于Rup在评论中提到,您应该能够从您创建的文本文件中读取数据。您可以通过多种方式来完成此操作,包括每个.sql语句的单独文件或一个大文件。

我会提醒的是,这可能也是一个安全风险。有人可以很容易地修改这些文件,并对你的数据库做恶意的事情。请小心不要在这些文件中以纯文本形式存储凭证。您可能需要考虑加密您的外部数据文件。

0

或者您可以简单地创建一个单独的CE文件,其中包含一个SQL语句表,可以在应用程序内甚至单独的一个表中轻松维护该表。通过这种方式,您可以打开语句数据库,调用所需的“过程”,拉取文本,关闭它,打开真实的数据库并使用第一个查询的结果在真实数据库上执行。当然,你将被限制在每场4000个字符,但这本身就很不错。如果你需要更多,将几个结合在一起。