2011-04-02 61 views
14

我只是想用MySql.Data.MySqlClient如何在.NET MySqlCommand中使用MySql用户定义的变量?

[System.Reflection.Assembly]::LoadWithPartialName("MySql.Data") 

$password = 'mypassword' 

$sql = "SET @a = 1;SELECT @a;" 

$server = 'localhost' 
$port = 3306 
$database = 'test' 
$User = 'root' 


$conn=new-object MySql.Data.MySqlClient.MySqlConnection 
$connectionstring = "Server=$Server;Port=$port;Database=$DataBase;Uid=$User;Pwd=$Password;allow zero datetime=yes" 
$conn.ConnectionString = $connectionstring 
$conn.Open() 

$cmd=new-object MySql.Data.MySqlClient.MySqlCommand($sql,$conn) 
$ds=New-Object system.Data.DataSet 
$da=New-Object MySql.Data.MySqlClient.MySqlDataAdapter($cmd) 
$da.fill($ds) 
$conn.close() 
$ds.tables[0] 

我得到一个致命的错误,执行下面的MySQL语句

SET @a = 1;SELECT @a; 

当我通过两种

$sql = "SELECT DATABASE();" 

$sql = "SELECT 1;" 

更换$ sql中我得到预期的结果。

我发现这个question,但它不能解决我的问题。

我试图将SQLIse(SQLPSX project的一部分)移植到MySQL版本MySQLIse。

我想处理任何简单有效的mysql语句。

编辑:

我试图运行sakila-schema.sql MySQL的演示数据库安装脚本,它通过类似

的mysql> SOURCE C同时运行的部分:/温度/ sakila的-DB /sakila-schema.sql;

+0

“SET @a = 1; SELECT @a;”在标准的MySql工具中工作?在TSQL中,您需要在使用它之前声明该变量,“DECLARE @a int; SET @a = 1; SELECT @a;” – 2011-04-02 17:24:44

+0

sakila-schema.sql以下列语句开头:SET @OLD_UNIQUE_CHECKS = @@ UNIQUE_CHECKS,UNIQUE_CHECKS = 0; – 2011-04-02 17:35:11

回答

39

我找到了解决这个bolg

我不得不

;Allow User Variables=True 

添加到连接字符串

$connectionstring = "Server=$Server;Port=$port;Database=$DataBase;Uid=$User;Pwd=$Password;allow zero datetime=yes;Allow User Variables=True" 

作品。我用版本6.3.6.0测试了它。的MySql.Data。

+3

+1000。 – ThisBoyPerforms 2014-11-26 23:30:36

相关问题