Как я могу использовать пользовательскую переменную MySql в .NET MySqlCommand?

14

Я просто хочу выполнить следующий оператор Mysql

SET @a = 1;SELECT @a;

с MySql.Data.MySqlClient

[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]

Я получаю фатальную ошибку.

Когда я заменяю $sql на

$sql = "SELECT DATABASE();"

или

$sql = "SELECT 1;"

Я получаю ожидаемый результат.

Я нашел этот question, но это не решает мою проблему.

Я пытаюсь передать SQLIse (часть проект SQLPSX) в MySQL-версию MySQLIse.

Я хочу обработать любые простые действительные операторы mysql.

EDIT:

Я пытался запустить части sakila-schema.sql демонстрационную базу данных mysql install script, которая запускается чем-то вроде

mysql > ИСТОЧНИК С:/temp/sakila-db/sakila-schema.sql;

  • 0
    делает "SET @a = 1; SELECT @a;" работать в стандартном инструменте MySql? В TSQL вам необходимо объявить переменную перед ее использованием: "DECLARE @a int; SET @a = 1; SELECT @a;"
  • 0
    sakila-schema.sql начинается с: SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHE = @@ UNIQUE_CHECKS, UNIQUE_CHECKS = 0;
Теги:
powershell

1 ответ

37
Лучший ответ

Я нашел решение в этом 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.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню