Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Изменение строки таблицы в базе данных MySQL при помощи Windows PowerShell (http://forum.oszone.net/showthread.php?t=243491)

Dezmond 27-09-2012 15:28 1995611

Изменение строки таблицы в базе данных MySQL при помощи Windows PowerShell
 
Добрый день!
Я еще пока новичок. Помогите, пожалуйста, чем сможете...

Задача: Создать скрипт, выполнение которого приводит к изменению записи таблицы в базе данных MySQL на удаленном сервере.

Синтаксис подключения к MySQL я вроде как нашел:
Server=myServerAddress;Port=1234;Database=myDataBase;Uid=myUsername;Pwd=myPassword;

А как теперь поменять запись?
Есть таблица Shipowner базы данных SeamansBook. Необходимо будет менять данные только у элемета с itemId = 1 (т.е. самая первая запись).

Kazun 27-09-2012 15:58 1995632

Попробуйте:

Код:

$connectionString = "myServerAddress;Port=1234;Database=myDataBase;Uid=myUsername;Pwd=myPassword;"
$connection = New-Object MySql.Data.MySqlClient.MySqlConnection
$connection.ConnectionString = $connectionString
$connection.Open()

$sql = New-Object MySql.Data.MySqlClient.MySqlCommand
$sql.Connection = $connection

$sql.CommandText = "update Shipowner set ColumnName = "New VALUE" where itemId = 1"
$sql.ExecuteNonQuery()


Dezmond 28-09-2012 13:09 1996076

Спасибо!
Поезд тронулся =)

Только пришлось сначала подключить MySqlData.dll
Также пришлось вынести значения в отдельные переменные

Код:

Add-Type -Path 'C:\Program Files (x86)\MySQL\MySQL Connector Net 6.4.5\Assemblies\v2.0\MySql.Data.dll'
$connectionString = "Server=myServerAddress;Port=3306;Database=SeamansBook;Uid=myUsername;Pwd=myPassword;"
$connection = New-Object MySql.Data.MySqlClient.MySqlConnection
$connection.ConnectionString = $connectionString
$connection.Open()

$sql = New-Object MySql.Data.MySqlClient.MySqlCommand
$sql.Connection = $connection

$RusFull = 'Gazprom'
$ID = '1'
$sql.CommandText = "UPDATE Shipowner SET shipownerRusFull = $RusFull WHERE itemId = $ID"
$sql.ExecuteNonQuery()

Правда все равно ругается и с этим пока сам разобраться не смог:

Исключение при вызове "ExecuteNonQuery" с "0" аргументами: "Unknown column 'Gazprom' in 'field list'"
C:\SeamansBook.ps1:13 знак:21
+ $sql.ExecuteNonQuery <<<< ()
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : DotNetMethodException

Я так понял, что он пытается найти поле Gazprom, а не вписать значение Gazprom в поле shipownerRusFull...
А вот почему - еще не знаю...

Kazun 28-09-2012 14:40 1996128

Если взять в кавычки?
"UPDATE Shipowner SET shipownerRusFull = ""$RusFull"" WHERE itemId = ""$ID"""

Dezmond 28-09-2012 14:58 1996142

Спасибо огромное!
Запахало!!!

А не подскажете, заодно, как мне в PowerShell прописать все файлы с разрешением?
Т.е. в командной строке *.txt , а в PowerShell?

Kazun 28-09-2012 15:03 1996146

dir *.txt


Время: 14:14.

Время: 14:14.
© OSzone.net 2001-