header
header Register : : Login header
header
divider
menuleft
menuright
submenu
left

We have a new sponsor!  Introducting Pragma Systems.  See the home page for details.

How get data from a column of a table and put in a variable?
Last Post 15 Oct 2009 02:01 PM by rrrrr5r. 6 Replies.
Printer Friendly
Sort:
PrevPrev NextNext
You are not authorized to post a reply.
Author Messages
ggmt89User is Offline
New Member
New Member
Posts:10
Avatar

--
16 Sep 2009 09:35 PM  
I need help to create a script.
The script gets a data of determinate column of a table in my database and store in a variable.
Somebody Help's me?
thanks
cmille19User is Offline
New Member
New Member
Posts:65
Avatar

--
16 Sep 2009 10:25 PM  

To do this, I'll use simple function in my script:

#######################
function Get-SQLData
{
    param(
    [string]$serverName,
    [string]$databaseName,
    [string]$query
    )

    Write-Verbose "Get-ISData serverName:$serverName databaseName:$databaseName query:$query"

    $connString = "Server=$serverName;Database=$databaseName;Integrated Security=SSPI;"
    $da = New-Object "System.Data.SqlClient.SqlDataAdapter" ($query,$connString)
    $dt = New-Object "System.Data.DataTable"
    [void]$da.fill($dt)
    $dt

} #Get-SQLData


Then I will call the function within the same script:

Get-SqlData "Z002\SQL2K8" "pubs" "select au_id from authors" | foreach {$_.au_id }

ggmt89User is Offline
New Member
New Member
Posts:10
Avatar

--
18 Sep 2009 08:39 PM  

Hi, thanks for the script, but I have a problem for understand the third parameter $query.
what is au_id and authors?
if you can explain for me, I will be very hapy.

Thanks.

ggmt89User is Offline
New Member
New Member
Posts:10
Avatar

--
18 Sep 2009 10:00 PM  
$SQLSERVER=read-host "Enter SQL Server Name:"
$Database=read-host "Enter Database Name:"
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Server=$SQLSERVER;Database=$DATABASE;Integrated Security=True"
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = "select name from sysobjects where type='u'"
$SqlCmd.Connection = $SqlConnection
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$query="select usuarios from usuarios" | foreach {$_.usuarios}
Write-Verbose "Get-ISData serverName:$serverName databaseName:$databaseName query:$query"
$da = New-Object "System.Data.SqlClient.SqlDataAdapter" ($query,$SqlConnection)
$dt = New-Object "System.Data.DataTable"
[void]$da.fill($dt)
$dt
$SqlConnection.Close()


tables name is: usuarios
columns name is: usuarios
but return this error:
Exception callin "fill" with "1" argument(s): "ExecuteReader: CommandText property has not been At C:\sql.ps1:16 char:16
+          [void]$da.fill( (((( $dt)

help me correct this error!
cmille19User is Offline
New Member
New Member
Posts:65
Avatar

--
18 Sep 2009 10:19 PM  
au_id is my example column name and authors an example table name. Both are from the sample database pubs provided by Microsoft. Since you didn't provide your column name or table name, I had to make up an example.
cmille19User is Offline
New Member
New Member
Posts:65
Avatar

--
18 Sep 2009 10:24 PM  
Posted By ggmt89 on 18 Sep 2009 02:00 PM
$SQLSERVER=read-host "Enter SQL Server Name:"
$Database=read-host "Enter Database Name:"
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Server=$SQLSERVER;Database=$DATABASE;Integrated Security=True"
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = "select name from sysobjects where type='u'"
$SqlCmd.Connection = $SqlConnection
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$query="select usuarios from usuarios" | foreach {$_.usuarios}
Write-Verbose "Get-ISData serverName:$serverName databaseName:$databaseName query:$query"
$da = New-Object "System.Data.SqlClient.SqlDataAdapter" ($query,$SqlConnection)
$dt = New-Object "System.Data.DataTable"
[void]$da.fill($dt)
$dt
$SqlConnection.Close()


tables name is: usuarios
columns name is: usuarios
but return this error:
Exception callin "fill" with "1" argument(s): "ExecuteReader: CommandText property has not been At C:\sql.ps1:16 char:16
+          [void]$da.fill( (((( $dt)

help me correct this error!

This is somewhat odd, $query="select usuarios from usuarios" | foreach {$_.usuarios}. You should just set $query to a string i.e.

$query="select usuarios from usuarios" 

Get rid of the | foreach {$_usarios} part. I haven't test the entire thing. Post back any errors after making this change first.
rrrrr5rUser is Offline
New Member
New Member
Posts:4
Avatar

--
15 Oct 2009 02:01 PM  
I believe the script the in the link can help. Although i don't really understand it...

http://www.powershell.nu/2009/01/27/handy-sql-function-in-powershell/
You are not authorized to post a reply.

Active Forums 4.1
right
   
footer Sponsored by Quest Software • SAPIEN Technologies • Compellent • Microsoft Windows Server 2008 footer
footer