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

Я просто хочу выполнить следующую инструкцию 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;"

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

Я нашел этот вопрос , но это нерешить мою проблему.

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

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

РЕДАКТИРОВАНИЕ:

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

mysql> SOURCE C: /temp/sakila-db/sakila-schema.sql;

1 Ответ

44 голосов
/ 03 апреля 2011

Я нашел решение в этом болг

Я должен добавить

;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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...