2011-04-02 63 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

相關問題