2012-03-13 51 views
1

我试图通过C#创建一个数据库,而不使用SMO,这有可能吗?!我目前有这个,但我99%是错的;有没有办法在MYSQL中创建数据库,而不使用SMO在C#

connectionString2 = "SERVER=" + server + ";" + "DATABASE=master;" 
          + "UID=" + uid + ";" + "PASSWORD=" + password + ";" 

this.OpenConnection(); //Which opens the above connection 

// The Lines array has stored the sql statements to create the databse 
// and tables for that database 
foreach (string line in lines) 
{ 
    create_database += line; 
} 
MySqlCommand cmd = new MySqlCommand(create_database, connection2); 
cmd.ExecuteNonQuery(); 

实际上是否可以在不使用SMO的情况下做到这一点?

+2

不确定你在说什么类型的数据库服务器。 SMO是MSSQL,但MySsqlCommand是MySQL ... – Sascha 2012-03-13 18:25:53

+0

对不起,Sascha,标题错误! – r0bb077 2012-03-13 18:29:01

+0

删除我MSSQL的答案 – Sascha 2012-03-13 18:31:35

回答

1

您必须像在示例中那样使用MySqlCommand。

MySqlCommand cmd = new MySqlCommand("CREATE DATABASE YAYNEWDATABASE;", connection2); 
connection2.Open(); 
cmd.ExecuteNonQuery(); 
connection2.Close(); 

另外,如果你打算做大量的修改,我建议尝试像Manatee的工具来处理你的数据库创建/迁移作为构建脚本的一部分。这对你正在做的事情做了很多假设,但是知道它并没有什么坏处。

这增加了类似于轨道到.net的迁移。

{ 
    up: "CREATE TABLE Orders (ID {pk}, OrderNumber {string} NOT NULL, SubTotal {money})", 
    down: "DROP TABLE Orders" 
} 
+0

谢谢!我已经创建并将数据库导出到一个sql文件中,是否有将它导入某个字符串变量以创建一个长SQL查询? – r0bb077 2012-03-13 18:57:00

+0

不是默认情况下,但它不应该很难用一些mysql命令。您可以在show tables describe table中运行一个foreach字符串,并在适当的位置替换一些数据类型{string}和{pk}。 – sclarson 2012-03-13 19:04:29

0

你可能会使用这样的:

var connection = new MySqlConnection("Data Source=server;UserId=root;PWD=pass;"); 
var command = new MySqlCommand("CREATE DATABASE FancyDatabase;", connection); 
connection.Open(); 
command.ExecuteNonQuery(); 
connection.Close(); 

注:没有默认的数据库,你需要拥有的权利。并且:这是未经测试的代码,使用标准的sql功能。

相关问题