<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Binod&#039;s Blog &#187; PostgreSQL Server</title>
	<atom:link href="http://planetearthsolution.com/binodsblog/category/postgres/feed/" rel="self" type="application/rss+xml" />
	<link>http://planetearthsolution.com/binodsblog</link>
	<description></description>
	<lastBuildDate>Sun, 18 Mar 2012 05:07:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Banqsys Project</title>
		<link>http://planetearthsolution.com/binodsblog/2012/03/17/banqsys-project/</link>
		<comments>http://planetearthsolution.com/binodsblog/2012/03/17/banqsys-project/#comments</comments>
		<pubDate>Sat, 17 Mar 2012 17:07:08 +0000</pubDate>
		<dc:creator>binod</dc:creator>
				<category><![CDATA[PostgreSQL Server]]></category>

		<guid isPermaLink="false">http://planetearthsolution.com/binodsblog/?p=151</guid>
		<description><![CDATA[Banqsys Core Banking Solution is a banking software being developed for small to mid sized financial institutions which uses GNU General Public Licence (GPL). Features Multiple Establishment: Office distribution&#8211;corporate office, headquarter, branch group, branch office, contact office, collection centers, and transaction counters. Deposits: Current Deposit, Savings Deposit, Savings Plan, and Term Deposit. Loan &#38; Advances: [...]]]></description>
			<content:encoded><![CDATA[<p>Banqsys Core Banking Solution is a banking software being developed for small to mid sized financial institutions which uses GNU General Public Licence (GPL).</p>
<h2>Features</h2>
<ul>
<li>Multiple Establishment: Office distribution&#8211;corporate office, headquarter, branch group, branch office, contact office, collection centers, and transaction counters.</li>
<li>Deposits: Current Deposit, Savings Deposit, Savings Plan, and Term Deposit.</li>
<li>Loan &amp; Advances: Loan Application, Scoring, Approval, Registration, Disburse, Repayment, and Reporting.</li>
<li>Reserves &amp; Capital: Institutional &amp; Member Fund, Reserves, and Equity.</li>
<li>Accounting Module: Chart of Accounts &amp; General Accounting.</li>
<li>Microfinance.</li>
<li>Internet Banking.</li>
</ul>
<h2>Architecture</h2>
<div>
<ul>
<li>ASP.net Mono C#</li>
<li>PostgreSQL Database</li>
<li>Ext.net</li>
</ul>
<div>Subversion: <a href="http://subversion.assembla.com/svn/banqsys/">http://subversion.assembla.com/svn/banqsys/</a></div>
<div>To follow the project, please visit the following url <a href="http://www.assembla.com/wiki/show/banqsys">http://www.assembla.com/wiki/show/banqsys</a></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://planetearthsolution.com/binodsblog/2012/03/17/banqsys-project/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>One to Many PostgreSQL transaction in .net</title>
		<link>http://planetearthsolution.com/binodsblog/2011/07/16/one-to-many-postgresql-transaction-in-net/</link>
		<comments>http://planetearthsolution.com/binodsblog/2011/07/16/one-to-many-postgresql-transaction-in-net/#comments</comments>
		<pubDate>Sat, 16 Jul 2011 18:09:01 +0000</pubDate>
		<dc:creator>binod</dc:creator>
				<category><![CDATA[PostgreSQL Server]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[npgsql]]></category>
		<category><![CDATA[postgresql]]></category>
		<category><![CDATA[transaction]]></category>
		<category><![CDATA[vb]]></category>

		<guid isPermaLink="false">http://planetearthsolution.com/binodsblog/?p=92</guid>
		<description><![CDATA[In my previous blog, I showed an example of one-to-one PostgreSQL transaction support in .net. In this blog, we will try to enter one to many PostgreSQL transaction from .net using Npgsql. To start off, we need some tables: Selec All Code:1 2 3 4 5 6 7 8 9 10 11 12 13 14 [...]]]></description>
			<content:encoded><![CDATA[<p>In my <a title="PostgreSQL Transaction and .net" href="http://planetearthsolution.com/binodsblog/2011/05/15/postgresql-transaction-and-net/">previous blog</a>, I showed an example of one-to-one PostgreSQL transaction support in .net. In this blog, we will try to enter one to many PostgreSQL transaction from .net using Npgsql. To start off, we need some tables:</p>

<div class="my_syntax_box"><span class="my_syntax_selecall"><a href="javascript:;" onclick="selectCode(this); return false;">Selec All</a> </span><span class="my_syntax_Bar">Code:</span><div class="my_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
</pre></td><td class="code"><pre class="plsql" style="font-family:monospace;"><span style="color: #00F;">CREATE</span> SEQUENCE orders_order_id_seq<span style="color: #00F;">;</span>
<span style="color: #00F;">CREATE</span> <span style="color: #00F;">TABLE</span> orders
<span style="color: #00F;">&#40;</span>
	order_id 	<span style="color: #00F;">INTEGER</span> <span style="color: #00F;">NOT</span> <span style="color: #00F;">NULL</span> PRIMARY KEY <span style="color: #00F;">DEFAULT</span><span style="color: #00F;">&#40;</span><span style="color: #00F;">NEXTVAL</span><span style="color: #00F;">&#40;</span><span style="color: #F00;">'orders_order_id_seq'</span><span style="color: #00F;">&#41;</span><span style="color: #00F;">::</span><span style="color: #00F;">INTEGER</span><span style="color: #00F;">&#41;</span><span style="color: #00F;">,</span>
	order_date	<span style="color: #00F;">TIMESTAMP</span> <span style="color: #00F;">WITH</span> <span style="color: #00F;">TIME</span> <span style="color: #00F;">ZONE</span> <span style="color: #00F;">NOT</span> <span style="color: #00F;">NULL</span> <span style="color: #00F;">DEFAULT</span><span style="color: #00F;">&#40;</span>NOW<span style="color: #00F;">&#40;</span><span style="color: #00F;">&#41;</span><span style="color: #00F;">&#41;</span><span style="color: #00F;">,</span>
	customer_name	character varying<span style="color: #00F;">&#40;</span><span style="color: #800;">40</span><span style="color: #00F;">&#41;</span> <span style="color: #00F;">NOT</span> <span style="color: #00F;">NULL</span>
<span style="color: #00F;">&#41;</span><span style="color: #00F;">;</span>
&nbsp;
<span style="color: #00F;">CREATE</span> SEQUENCE ordered_products_ordered_product_id_seq<span style="color: #00F;">;</span>
<span style="color: #00F;">CREATE</span> <span style="color: #00F;">TABLE</span> ordered_products
<span style="color: #00F;">&#40;</span>
	ordered_product_id	<span style="color: #00F;">INTEGER</span> <span style="color: #00F;">NOT</span> <span style="color: #00F;">NULL</span> PRIMARY KEY <span style="color: #00F;">DEFAULT</span><span style="color: #00F;">&#40;</span><span style="color: #00F;">NEXTVAL</span><span style="color: #00F;">&#40;</span><span style="color: #F00;">'ordered_products_ordered_product_id_seq'</span><span style="color: #00F;">&#41;</span><span style="color: #00F;">::</span><span style="color: #00F;">INTEGER</span><span style="color: #00F;">&#41;</span><span style="color: #00F;">,</span>
	order_id		<span style="color: #00F;">INTEGER</span> <span style="color: #00F;">NOT</span> <span style="color: #00F;">NULL</span> REFERENCES orders<span style="color: #00F;">&#40;</span>order_id<span style="color: #00F;">&#41;</span><span style="color: #00F;">,</span>
	product_name		character varying<span style="color: #00F;">&#40;</span><span style="color: #800;">40</span><span style="color: #00F;">&#41;</span> <span style="color: #00F;">NOT</span> <span style="color: #00F;">NULL</span>
<span style="color: #00F;">&#41;</span><span style="color: #00F;">;</span>
&nbsp;
<span style="color: #00F;">CREATE</span> <span style="color: #00F;">UNIQUE</span> <span style="color: #00F;">INDEX</span> ordered_products_product_name_uix
<span style="color: #00F;">ON</span> ordered_products<span style="color: #00F;">&#40;</span>order_id<span style="color: #00F;">,</span> <span style="color: #000;">UPPER</span><span style="color: #00F;">&#40;</span>product_name<span style="color: #00F;">&#41;</span><span style="color: #00F;">&#41;</span><span style="color: #00F;">;</span></pre></td></tr></table></div></div>

<h2>Transaction in plpgsql</h2>

<div class="my_syntax_box"><span class="my_syntax_selecall"><a href="javascript:;" onclick="selectCode(this); return false;">Selec All</a> </span><span class="my_syntax_Bar">Code:</span><div class="my_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</pre></td><td class="code"><pre class="plsql" style="font-family:monospace;"><span style="color: #00F;">DO</span>
$$
<span style="color: #00F;">DECLARE</span> _order_id <span style="color: #00F;">INTEGER</span><span style="color: #00F;">;</span>
<span style="color: #00F;">BEGIN</span>
	<span style="color: #00F;">INSERT</span> <span style="color: #00F;">INTO</span> orders<span style="color: #00F;">&#40;</span>customer_name<span style="color: #00F;">&#41;</span>
	<span style="color: #00F;">SELECT</span> <span style="color: #F00;">'Rudolf Schenker'</span><span style="color: #00F;">;</span>
&nbsp;
	_order_id<span style="color: #00F;">:=</span><span style="color: #00F;">CURRVAL</span><span style="color: #00F;">&#40;</span><span style="color: #F00;">'orders_order_id_seq'</span><span style="color: #00F;">&#41;</span><span style="color: #00F;">::</span><span style="color: #00F;">INTEGER</span><span style="color: #00F;">;</span>
&nbsp;
	<span style="color: #00F;">INSERT</span> <span style="color: #00F;">INTO</span> ordered_products<span style="color: #00F;">&#40;</span>order_id<span style="color: #00F;">,</span> product_name<span style="color: #00F;">&#41;</span>
	<span style="color: #00F;">SELECT</span> _order_id<span style="color: #00F;">,</span> <span style="color: #F00;">'Holiday'</span> <span style="color: #00F;">UNION</span> <span style="color: #00F;">ALL</span>
	<span style="color: #00F;">SELECT</span> _order_id<span style="color: #00F;">,</span> <span style="color: #F00;">'Wind of Change'</span> <span style="color: #00F;">UNION</span> <span style="color: #00F;">ALL</span>
	<span style="color: #00F;">SELECT</span> _order_id<span style="color: #00F;">,</span> <span style="color: #F00;">'Under the Same Sun'</span> <span style="color: #00F;">UNION</span> <span style="color: #00F;">ALL</span>
	<span style="color: #00F;">SELECT</span> _order_id<span style="color: #00F;">,</span> <span style="color: #F00;">'When You Came into My Life'</span> <span style="color: #00F;">UNION</span> <span style="color: #00F;">ALL</span>
	<span style="color: #00F;">SELECT</span> _order_id<span style="color: #00F;">,</span> <span style="color: #F00;">'Rock You Like a Hurricane'</span><span style="color: #00F;">;</span>
	<span style="color: #00F;">RAISE</span> NOTICE <span style="color: #F00;">'The transaction was successfully processed.'</span><span style="color: #00F;">;</span>
<span style="color: #00F;">EXCEPTION</span>
	<span style="color: #00F;">WHEN</span> <span style="color: #00F;">OTHERS</span> <span style="color: #00F;">THEN</span>
	<span style="color: #00F;">RAISE</span> NOTICE <span style="color: #F00;">'The transaction was rolled back, nothing was changed.'</span><span style="color: #00F;">;</span>
<span style="color: #00F;">END</span>
$$
LANGUAGE plpgsql<span style="color: #00F;">;</span></pre></td></tr></table></div></div>

<h2>Transaction in CSharp (Npgsql)</h2>

<div class="my_syntax_box"><span class="my_syntax_selecall"><a href="javascript:;" onclick="selectCode(this); return false;">Selec All</a> </span><span class="my_syntax_Bar">Code:</span><div class="my_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
</pre></td><td class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">bool</span> SaveOrder<span style="color: #008000;">&#40;</span><span style="color: #6666cc; font-weight: bold;">string</span> customerName, List products<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008000;">&#40;</span>NpgsqlConnection pgConnection <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> NpgsqlConnection<span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;Server=localhost;User id=postgres;password=binod;Database=postgres;&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		<span style="color: #0600FF; font-weight: bold;">try</span>
		<span style="color: #008000;">&#123;</span>
			pgConnection<span style="color: #008000;">.</span><span style="color: #0000FF;">Open</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
			<span style="color: #008080; font-style: italic;">//Connection successful</span>
&nbsp;
			<span style="color: #008080; font-style: italic;">//Create a new transaction</span>
			<span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008000;">&#40;</span>NpgsqlTransaction pgTransaction <span style="color: #008000;">=</span> pgConnection<span style="color: #008000;">.</span><span style="color: #0000FF;">BeginTransaction</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
			<span style="color: #008000;">&#123;</span>
				<span style="color: #0600FF; font-weight: bold;">try</span>
				<span style="color: #008000;">&#123;</span>
					<span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008000;">&#40;</span>NpgsqlCommand roleCommand <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> NpgsqlCommand<span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;INSERT INTO orders(customer_name) SELECT @customer_name;SELECT CURRVAL('orders_order_id_seq')::integer as order_id;&quot;</span>, pgConnection, pgTransaction<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
					<span style="color: #008000;">&#123;</span>
						roleCommand<span style="color: #008000;">.</span><span style="color: #0000FF;">Parameters</span><span style="color: #008000;">.</span><span style="color: #0000FF;">AddWithValue</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;@customer_name&quot;</span>, customerName<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
						<span style="color: #008080; font-style: italic;">//Get the newly inserted row_id of the current scope</span>
						<span style="color: #6666cc; font-weight: bold;">int</span> orderId <span style="color: #008000;">=</span> Convert<span style="color: #008000;">.</span><span style="color: #0000FF;">ToInt32</span><span style="color: #008000;">&#40;</span>roleCommand<span style="color: #008000;">.</span><span style="color: #0000FF;">ExecuteScalar</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
						<span style="color: #0600FF; font-weight: bold;">foreach</span> <span style="color: #008000;">&#40;</span><span style="color: #6666cc; font-weight: bold;">string</span> product <span style="color: #0600FF; font-weight: bold;">in</span> products<span style="color: #008000;">&#41;</span>
						<span style="color: #008000;">&#123;</span>
							<span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008000;">&#40;</span>NpgsqlCommand userCommand <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> NpgsqlCommand<span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;INSERT INTO ordered_products(order_id, product_name) SELECT @order_id, @product_name;&quot;</span>, pgConnection, pgTransaction<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
							<span style="color: #008000;">&#123;</span>
								userCommand<span style="color: #008000;">.</span><span style="color: #0000FF;">Parameters</span><span style="color: #008000;">.</span><span style="color: #0000FF;">AddWithValue</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;@order_id&quot;</span>, orderId<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
								userCommand<span style="color: #008000;">.</span><span style="color: #0000FF;">Parameters</span><span style="color: #008000;">.</span><span style="color: #0000FF;">AddWithValue</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;@product_name&quot;</span>, product<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
								userCommand<span style="color: #008000;">.</span><span style="color: #0000FF;">ExecuteNonQuery</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
							<span style="color: #008000;">&#125;</span>
						<span style="color: #008000;">&#125;</span>
&nbsp;
						<span style="color: #008080; font-style: italic;">//No exceptions encountered</span>
						pgTransaction<span style="color: #008000;">.</span><span style="color: #0000FF;">Commit</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
						<span style="color: #008080; font-style: italic;">//System.Windows.Forms.MessageBox.Show(&quot;Task completed successfully.&quot;, &quot;Success&quot;, MessageBoxButtons.OK, MessageBoxIcon.Information);</span>
						<span style="color: #0600FF; font-weight: bold;">return</span> <span style="color: #0600FF; font-weight: bold;">true</span><span style="color: #008000;">;</span>
					<span style="color: #008000;">&#125;</span>
				<span style="color: #008000;">&#125;</span>
				<span style="color: #0600FF; font-weight: bold;">catch</span>
				<span style="color: #008000;">&#123;</span>
					<span style="color: #008080; font-style: italic;">//Transaction rolled back to the original state</span>
					pgTransaction<span style="color: #008000;">.</span><span style="color: #0000FF;">Rollback</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
					<span style="color: #0600FF; font-weight: bold;">throw</span><span style="color: #008000;">;</span>
				<span style="color: #008000;">&#125;</span>
			<span style="color: #008000;">&#125;</span>
		<span style="color: #008000;">&#125;</span>
		<span style="color: #0600FF; font-weight: bold;">catch</span> <span style="color: #008000;">&#40;</span>NpgsqlException ex<span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			MessageBox<span style="color: #008000;">.</span><span style="color: #0000FF;">Show</span><span style="color: #008000;">&#40;</span>ex<span style="color: #008000;">.</span><span style="color: #0000FF;">Message</span>, <span style="color: #666666;">&quot;Error&quot;</span>, MessageBoxButtons<span style="color: #008000;">.</span><span style="color: #0000FF;">OK</span>, MessageBoxIcon<span style="color: #008000;">.</span><span style="color: #0000FF;">Error</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
		<span style="color: #008000;">&#125;</span>
		<span style="color: #0600FF; font-weight: bold;">catch</span>
		<span style="color: #008000;">&#123;</span>
			<span style="color: #0600FF; font-weight: bold;">throw</span><span style="color: #008000;">;</span>
		<span style="color: #008000;">&#125;</span>
	<span style="color: #008000;">&#125;</span>
	<span style="color: #0600FF; font-weight: bold;">return</span> <span style="color: #0600FF; font-weight: bold;">false</span><span style="color: #008000;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div></div>

<h2>Using the CSharp Function<span class="Apple-style-span" style="color: #333333; font-weight: 300;"> </span></h2>

<div class="my_syntax_box"><span class="my_syntax_selecall"><a href="javascript:;" onclick="selectCode(this); return false;">Selec All</a> </span><span class="my_syntax_Bar">Code:</span><div class="my_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code"><pre class="csharp" style="font-family:monospace;">List<span style="color: #008000;">&lt;</span><span style="color: #6666cc; font-weight: bold;">string</span><span style="color: #008000;">&gt;</span> products <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> List<span style="color: #008000;">&lt;</span><span style="color: #6666cc; font-weight: bold;">string</span><span style="color: #008000;">&gt;</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
products<span style="color: #008000;">.</span><span style="color: #0000FF;">Add</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;Holiday&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
products<span style="color: #008000;">.</span><span style="color: #0000FF;">Add</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;Wind of Change&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
products<span style="color: #008000;">.</span><span style="color: #0000FF;">Add</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;Under the Same Sun&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
products<span style="color: #008000;">.</span><span style="color: #0000FF;">Add</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;When You Came into My Life&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
products<span style="color: #008000;">.</span><span style="color: #0000FF;">Add</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;Rock You Like a Hurricane&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
SaveOrder<span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;Rudolf Schenker&quot;</span>,products<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span></pre></td></tr></table></div></div>

<h2>Transaction in VisualBasic (Npgsql)</h2>

<div class="my_syntax_box"><span class="my_syntax_selecall"><a href="javascript:;" onclick="selectCode(this); return false;">Selec All</a> </span><span class="my_syntax_Bar">Code:</span><div class="my_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
</pre></td><td class="code"><pre class="vbnet" style="font-family:monospace;"><span style="color: #0600FF;">Function</span> SaveOrder<span style="color: #000000;">&#40;</span><span style="color: #FF8000;">ByVal</span> customerName <span style="color: #FF8000;">As</span> <span style="color: #FF8000;">String</span>, <span style="color: #FF8000;">ByVal</span> products <span style="color: #FF8000;">As</span> List<span style="color: #000000;">&#40;</span><span style="color: #FF8000;">Of</span> <span style="color: #FF8000;">String</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span> <span style="color: #FF8000;">As</span> <span style="color: #FF0000;">Boolean</span>
	Using pgConnection <span style="color: #FF8000;">As</span> NpgsqlConnection <span style="color: #008000;">=</span> <span style="color: #FF8000;">New</span> NpgsqlConnection<span style="color: #000000;">&#40;</span><span style="color: #808080;">&quot;Server=localhost;User id=postgres;password=binod;Database=postgres;&quot;</span><span style="color: #000000;">&#41;</span>
		<span style="color: #0600FF;">Try</span>
			pgConnection.<span style="color: #0600FF;">Open</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
			<span style="color: #008080; font-style: italic;">'Connection successful</span>
&nbsp;
			<span style="color: #008080; font-style: italic;">'Create a new transaction</span>
			Using pgTransaction <span style="color: #FF8000;">As</span> NpgsqlTransaction <span style="color: #008000;">=</span> pgConnection.<span style="color: #0000FF;">BeginTransaction</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
				<span style="color: #0600FF;">Try</span>
					Using roleCommand <span style="color: #FF8000;">As</span> NpgsqlCommand <span style="color: #008000;">=</span> <span style="color: #FF8000;">New</span> NpgsqlCommand<span style="color: #000000;">&#40;</span><span style="color: #808080;">&quot;INSERT INTO orders(customer_name) SELECT @customer_name;SELECT CURRVAL('orders_order_id_seq')::integer as order_id;&quot;</span>, pgConnection, pgTransaction<span style="color: #000000;">&#41;</span>
						roleCommand.<span style="color: #0000FF;">Parameters</span>.<span style="color: #0000FF;">AddWithValue</span><span style="color: #000000;">&#40;</span><span style="color: #808080;">&quot;@customer_name&quot;</span>, customerName<span style="color: #000000;">&#41;</span>
&nbsp;
						<span style="color: #008080; font-style: italic;">'Get the newly inserted row_id of the current scope</span>
						<span style="color: #0600FF;">Dim</span> orderId <span style="color: #FF8000;">As</span> <span style="color: #FF0000;">Integer</span> <span style="color: #008000;">=</span> Convert.<span style="color: #0000FF;">ToInt32</span><span style="color: #000000;">&#40;</span>roleCommand.<span style="color: #0000FF;">ExecuteScalar</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span>
&nbsp;
						<span style="color: #FF8000;">For</span> <span style="color: #0600FF;">Each</span> product <span style="color: #FF8000;">As</span> <span style="color: #FF8000;">String</span> In products
							Using userCommand <span style="color: #FF8000;">As</span> NpgsqlCommand <span style="color: #008000;">=</span> <span style="color: #FF8000;">New</span> NpgsqlCommand<span style="color: #000000;">&#40;</span><span style="color: #808080;">&quot;INSERT INTO ordered_products(order_id, product_name) SELECT @order_id, @product_name;&quot;</span>, pgConnection, pgTransaction<span style="color: #000000;">&#41;</span>
								userCommand.<span style="color: #0000FF;">Parameters</span>.<span style="color: #0000FF;">AddWithValue</span><span style="color: #000000;">&#40;</span><span style="color: #808080;">&quot;@order_id&quot;</span>, orderId<span style="color: #000000;">&#41;</span>
								userCommand.<span style="color: #0000FF;">Parameters</span>.<span style="color: #0000FF;">AddWithValue</span><span style="color: #000000;">&#40;</span><span style="color: #808080;">&quot;@product_name&quot;</span>, product<span style="color: #000000;">&#41;</span>
								userCommand.<span style="color: #0000FF;">ExecuteNonQuery</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
							<span style="color: #0600FF;">End</span> Using
						<span style="color: #FF8000;">Next</span>
&nbsp;
						<span style="color: #008080; font-style: italic;">'No exceptions encountered</span>
						pgTransaction.<span style="color: #0000FF;">Commit</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
&nbsp;
						<span style="color: #008080; font-style: italic;">'System.Windows.Forms.MessageBox.Show(&quot;Task completed successfully.&quot;, &quot;Success&quot;, MessageBoxButtons.OK, MessageBoxIcon.Information)</span>
						<span style="color: #FF8000;">Return</span> <span style="color: #0600FF;">True</span>
					<span style="color: #0600FF;">End</span> Using
				<span style="color: #0600FF;">Catch</span>
					<span style="color: #008080; font-style: italic;">'Transaction rolled back to the original state</span>
					pgTransaction.<span style="color: #0000FF;">Rollback</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
					<span style="color: #FF8000;">Throw</span>
				<span style="color: #0600FF;">End</span> <span style="color: #0600FF;">Try</span>
			<span style="color: #0600FF;">End</span> Using
		<span style="color: #0600FF;">Catch</span> ex <span style="color: #FF8000;">As</span> NpgsqlException
			MessageBox.<span style="color: #0000FF;">Show</span><span style="color: #000000;">&#40;</span>ex.<span style="color: #0000FF;">Message</span>, <span style="color: #808080;">&quot;Error&quot;</span>, MessageBoxButtons.<span style="color: #0600FF;">OK</span>, MessageBoxIcon.<span style="color: #FF8000;">Error</span><span style="color: #000000;">&#41;</span>
		<span style="color: #0600FF;">Catch</span>
			<span style="color: #FF8000;">Throw</span>
		<span style="color: #0600FF;">End</span> <span style="color: #0600FF;">Try</span>
	<span style="color: #0600FF;">End</span> Using
	<span style="color: #FF8000;">Return</span> <span style="color: #0600FF;">False</span>
<span style="color: #0600FF;">End</span> <span style="color: #0600FF;">Function</span></pre></td></tr></table></div></div>

<h2>Using the VisualBasic Function</h2>
<p>&nbsp;</p>

<div class="my_syntax_box"><span class="my_syntax_selecall"><a href="javascript:;" onclick="selectCode(this); return false;">Selec All</a> </span><span class="my_syntax_Bar">Code:</span><div class="my_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code"><pre class="vbnet" style="font-family:monospace;"><span style="color: #0600FF;">Dim</span> products <span style="color: #FF8000;">As</span> List<span style="color: #000000;">&#40;</span><span style="color: #FF8000;">Of</span> <span style="color: #FF8000;">String</span><span style="color: #000000;">&#41;</span> <span style="color: #008000;">=</span> <span style="color: #FF8000;">New</span> List<span style="color: #000000;">&#40;</span><span style="color: #FF8000;">Of</span> <span style="color: #FF8000;">String</span><span style="color: #000000;">&#41;</span>
products.<span style="color: #0000FF;">Add</span><span style="color: #000000;">&#40;</span><span style="color: #808080;">&quot;Holiday&quot;</span><span style="color: #000000;">&#41;</span>
products.<span style="color: #0000FF;">Add</span><span style="color: #000000;">&#40;</span><span style="color: #808080;">&quot;Wind of Change&quot;</span><span style="color: #000000;">&#41;</span>
products.<span style="color: #0000FF;">Add</span><span style="color: #000000;">&#40;</span><span style="color: #808080;">&quot;Under the Same Sun&quot;</span><span style="color: #000000;">&#41;</span>
products.<span style="color: #0000FF;">Add</span><span style="color: #000000;">&#40;</span><span style="color: #808080;">&quot;When You Came into My Life&quot;</span><span style="color: #000000;">&#41;</span>
products.<span style="color: #0000FF;">Add</span><span style="color: #000000;">&#40;</span><span style="color: #808080;">&quot;Rock You Like a Hurricane&quot;</span><span style="color: #000000;">&#41;</span>
&nbsp;
SaveOrder<span style="color: #000000;">&#40;</span><span style="color: #808080;">&quot;Rudolf Schenker&quot;</span>, products<span style="color: #000000;">&#41;</span></pre></td></tr></table></div></div>

]]></content:encoded>
			<wfw:commentRss>http://planetearthsolution.com/binodsblog/2011/07/16/one-to-many-postgresql-transaction-in-net/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Save and Retrieve Image in PostgreSQL Server using Microsoft.net</title>
		<link>http://planetearthsolution.com/binodsblog/2011/07/05/save-and-retrieve-image-in-postgresql-server-using-microsoft-net/</link>
		<comments>http://planetearthsolution.com/binodsblog/2011/07/05/save-and-retrieve-image-in-postgresql-server-using-microsoft-net/#comments</comments>
		<pubDate>Tue, 05 Jul 2011 14:56:00 +0000</pubDate>
		<dc:creator>binod</dc:creator>
				<category><![CDATA[PostgreSQL Server]]></category>
		<category><![CDATA[bytea]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[image]]></category>
		<category><![CDATA[npgsql]]></category>
		<category><![CDATA[postgresql]]></category>
		<category><![CDATA[vb]]></category>

		<guid isPermaLink="false">http://planetearthsolution.com/binodsblog/?p=21</guid>
		<description><![CDATA[&#62;In this blog, I will try to explain a basic image storing and retrieval technique in PostgreSQL Server using Microsoft.net and Npgsql. Prerequisites: PostgreSQL Server Npgsql Visual Studio 2005/2008/2010 Creating an image-containing table Create an image-containing table: Selec All Code:1 2 3 4 5 6 CREATE TABLE products &#40; product_id SERIAL NOT NULL PRIMARY KEY, [...]]]></description>
			<content:encoded><![CDATA[<p>&gt;In this blog, I will try to explain a basic image storing and retrieval technique in PostgreSQL Server using Microsoft.net and Npgsql.</p>
<h3>Prerequisites:</h3>
<ul>
<li>PostgreSQL Server</li>
<li>Npgsql</li>
<li>Visual Studio 2005/2008/2010</li>
<li>Creating an image-containing table</li>
</ul>
<div>
<h3>Create an image-containing table:</h3>

<div class="my_syntax_box"><span class="my_syntax_selecall"><a href="javascript:;" onclick="selectCode(this); return false;">Selec All</a> </span><span class="my_syntax_Bar">Code:</span><div class="my_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">TABLE</span> products
<span style="color: #66cc66;">&#40;</span>
	product_id SERIAL <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span> <span style="color: #993333; font-weight: bold;">PRIMARY</span> <span style="color: #993333; font-weight: bold;">KEY</span><span style="color: #66cc66;">,</span>
	product_name <span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">40</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span> <span style="color: #993333; font-weight: bold;">UNIQUE</span><span style="color: #66cc66;">,</span>
	product_image bytea <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span>
<span style="color: #66cc66;">&#41;</span>;</pre></td></tr></table></div></div>

</div>
<div>Bytea stores binary information in PostgreSQL database. Further information, <a title="PostgreSQL Bytea Data Type" href="http://www.postgresql.org/docs/9.0/static/datatype-binary.html" target="_blank">read documentation</a>.</div>
<div>
<h3>Save a product along with image</h3>
</div>
<h3>References</h3>
<ul>
<li>System</li>
<li>System.Data</li>
<li>System.Drawing</li>
<li>System.Text</li>
<li>System.Windows.Forms</li>
<li>Npgsql</li>
<li>System.IO</li>
</ul>
<div>
<h3>CSharp</h3>
</div>
<div>

<div class="my_syntax_box"><span class="my_syntax_selecall"><a href="javascript:;" onclick="selectCode(this); return false;">Selec All</a> </span><span class="my_syntax_Bar">Code:</span><div class="my_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
</pre></td><td class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">void</span> SaveProduct<span style="color: #008000;">&#40;</span><span style="color: #6666cc; font-weight: bold;">string</span> productName, <span style="color: #6666cc; font-weight: bold;">string</span> productImageFilePath<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008000;">&#40;</span>NpgsqlConnection pgConnection <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> NpgsqlConnection<span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;server=localhost;user id=postgres;password=binod;database=postgres&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		<span style="color: #0600FF; font-weight: bold;">try</span>
		<span style="color: #008000;">&#123;</span>
			<span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008000;">&#40;</span>FileStream pgFileStream <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> FileStream<span style="color: #008000;">&#40;</span>productImageFilePath, FileMode<span style="color: #008000;">.</span><span style="color: #0000FF;">Open</span>, FileAccess<span style="color: #008000;">.</span><span style="color: #0000FF;">Read</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
			<span style="color: #008000;">&#123;</span>
				<span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008000;">&#40;</span>BinaryReader pgReader <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> BinaryReader<span style="color: #008000;">&#40;</span><span style="color: #008000;">new</span> BufferedStream<span style="color: #008000;">&#40;</span>pgFileStream<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
				<span style="color: #008000;">&#123;</span>
					<span style="color: #6666cc; font-weight: bold;">byte</span><span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span> pgByteA <span style="color: #008000;">=</span> pgReader<span style="color: #008000;">.</span><span style="color: #0000FF;">ReadBytes</span><span style="color: #008000;">&#40;</span>Convert<span style="color: #008000;">.</span><span style="color: #0000FF;">ToInt32</span><span style="color: #008000;">&#40;</span>pgFileStream<span style="color: #008000;">.</span><span style="color: #0000FF;">Length</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
					<span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008000;">&#40;</span>NpgsqlCommand pgCommand <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> NpgsqlCommand<span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;INSERT INTO products(product_name, product_image) SELECT @ProductName, @ProductImage&quot;</span>, pgConnection<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
					<span style="color: #008000;">&#123;</span>
						pgCommand<span style="color: #008000;">.</span><span style="color: #0000FF;">Parameters</span><span style="color: #008000;">.</span><span style="color: #0000FF;">AddWithValue</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;@ProductName&quot;</span>, productName<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
						pgCommand<span style="color: #008000;">.</span><span style="color: #0000FF;">Parameters</span><span style="color: #008000;">.</span><span style="color: #0000FF;">AddWithValue</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;@ProductImage&quot;</span>, pgByteA<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
						<span style="color: #0600FF; font-weight: bold;">try</span>
						<span style="color: #008000;">&#123;</span>
							pgConnection<span style="color: #008000;">.</span><span style="color: #0000FF;">Open</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
							pgCommand<span style="color: #008000;">.</span><span style="color: #0000FF;">ExecuteNonQuery</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
						<span style="color: #008000;">&#125;</span>
						<span style="color: #0600FF; font-weight: bold;">catch</span>
						<span style="color: #008000;">&#123;</span>
							<span style="color: #0600FF; font-weight: bold;">throw</span><span style="color: #008000;">;</span>
						<span style="color: #008000;">&#125;</span>
					<span style="color: #008000;">&#125;</span>
				<span style="color: #008000;">&#125;</span>
			<span style="color: #008000;">&#125;</span>
		<span style="color: #008000;">&#125;</span>
		<span style="color: #0600FF; font-weight: bold;">catch</span>
		<span style="color: #008000;">&#123;</span>
			<span style="color: #0600FF; font-weight: bold;">throw</span><span style="color: #008000;">;</span>
		<span style="color: #008000;">&#125;</span>
	<span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div></div>

</div>
<div>
<h3>VisualBasic</h3>
</div>
<div>

<div class="my_syntax_box"><span class="my_syntax_selecall"><a href="javascript:;" onclick="selectCode(this); return false;">Selec All</a> </span><span class="my_syntax_Bar">Code:</span><div class="my_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
</pre></td><td class="code"><pre class="vbnet" style="font-family:monospace;"><span style="color: #0600FF;">Sub</span> SaveProduct<span style="color: #000000;">&#40;</span><span style="color: #FF8000;">ByVal</span> productName <span style="color: #FF8000;">As</span> <span style="color: #FF8000;">String</span>, <span style="color: #FF8000;">ByVal</span> productImageFilePath <span style="color: #FF8000;">As</span> <span style="color: #FF8000;">String</span><span style="color: #000000;">&#41;</span>
	Using pgConnection <span style="color: #FF8000;">As</span> NpgsqlConnection <span style="color: #008000;">=</span> <span style="color: #FF8000;">New</span> NpgsqlConnection<span style="color: #000000;">&#40;</span><span style="color: #808080;">&quot;server=localhost;user id=postgres;password=binod;database=postgres&quot;</span><span style="color: #000000;">&#41;</span>
		<span style="color: #0600FF;">Try</span>
			Using pgFileStream <span style="color: #FF8000;">As</span> FileStream <span style="color: #008000;">=</span> <span style="color: #FF8000;">New</span> FileStream<span style="color: #000000;">&#40;</span>productImageFilePath, FileMode.<span style="color: #0600FF;">Open</span>, FileAccess.<span style="color: #0000FF;">Read</span><span style="color: #000000;">&#41;</span>
				Using pgReader <span style="color: #FF8000;">As</span> BinaryReader <span style="color: #008000;">=</span> <span style="color: #FF8000;">New</span> BinaryReader<span style="color: #000000;">&#40;</span><span style="color: #FF8000;">New</span> BufferedStream<span style="color: #000000;">&#40;</span>pgFileStream<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span>
					<span style="color: #0600FF;">Dim</span> pgByteA <span style="color: #FF8000;">As</span> <span style="color: #FF0000;">Byte</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #008000;">=</span> pgReader.<span style="color: #0000FF;">ReadBytes</span><span style="color: #000000;">&#40;</span><span style="color: #0600FF;">CInt</span><span style="color: #000000;">&#40;</span>pgFileStream.<span style="color: #0000FF;">Length</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span>
					Using pgCommand <span style="color: #FF8000;">As</span> NpgsqlCommand <span style="color: #008000;">=</span> <span style="color: #FF8000;">New</span> NpgsqlCommand<span style="color: #000000;">&#40;</span><span style="color: #808080;">&quot;INSERT INTO products(product_name, product_image) SELECT @ProductName, @ProductImage&quot;</span>, pgConnection<span style="color: #000000;">&#41;</span>
						pgCommand.<span style="color: #0000FF;">Parameters</span>.<span style="color: #0000FF;">AddWithValue</span><span style="color: #000000;">&#40;</span><span style="color: #808080;">&quot;@ProductName&quot;</span>, productName<span style="color: #000000;">&#41;</span>
						pgCommand.<span style="color: #0000FF;">Parameters</span>.<span style="color: #0000FF;">AddWithValue</span><span style="color: #000000;">&#40;</span><span style="color: #808080;">&quot;@ProductImage&quot;</span>, pgByteA<span style="color: #000000;">&#41;</span>
						<span style="color: #0600FF;">Try</span>
							pgConnection.<span style="color: #0600FF;">Open</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
							pgCommand.<span style="color: #0000FF;">ExecuteNonQuery</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
						<span style="color: #0600FF;">Catch</span>
							<span style="color: #FF8000;">Throw</span>
						<span style="color: #0600FF;">End</span> <span style="color: #0600FF;">Try</span>
					<span style="color: #0600FF;">End</span> Using
				<span style="color: #0600FF;">End</span> Using
			<span style="color: #0600FF;">End</span> Using
		<span style="color: #0600FF;">Catch</span>
			<span style="color: #FF8000;">Throw</span>
		<span style="color: #0600FF;">End</span> <span style="color: #0600FF;">Try</span>
	<span style="color: #0600FF;">End</span> Using
<span style="color: #0600FF;">End</span> <span style="color: #0600FF;">Sub</span></pre></td></tr></table></div></div>

</div>
<div>
<h3>Get image from PostgreSQL Server</h3>
<div>
<h3>CSharp</h3>

<div class="my_syntax_box"><span class="my_syntax_selecall"><a href="javascript:;" onclick="selectCode(this); return false;">Selec All</a> </span><span class="my_syntax_Bar">Code:</span><div class="my_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
</pre></td><td class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #0600FF; font-weight: bold;">public</span> Image GetProductImage<span style="color: #008000;">&#40;</span><span style="color: #6666cc; font-weight: bold;">string</span> productName<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008000;">&#40;</span>NpgsqlConnection pgConnection <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> NpgsqlConnection<span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;server=localhost;user id=postgres;password=binod;database=mintgres&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		<span style="color: #0600FF; font-weight: bold;">try</span>
		<span style="color: #008000;">&#123;</span>
			<span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008000;">&#40;</span>NpgsqlCommand pgCommand <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> NpgsqlCommand<span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;SELECT product_image FROM products WHERE product_name=@ProductName;&quot;</span>, pgConnection<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
			<span style="color: #008000;">&#123;</span>
				pgCommand<span style="color: #008000;">.</span><span style="color: #0000FF;">Parameters</span><span style="color: #008000;">.</span><span style="color: #0000FF;">AddWithValue</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;@ProductName&quot;</span>, productName<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
				<span style="color: #0600FF; font-weight: bold;">try</span>
				<span style="color: #008000;">&#123;</span>
					pgConnection<span style="color: #008000;">.</span><span style="color: #0000FF;">Open</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
					<span style="color: #6666cc; font-weight: bold;">Byte</span><span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span> productImageByte <span style="color: #008000;">=</span> <span style="color: #008000;">&#40;</span><span style="color: #6666cc; font-weight: bold;">Byte</span><span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>pgCommand<span style="color: #008000;">.</span><span style="color: #0000FF;">ExecuteScalar</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
					<span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span>productImageByte <span style="color: #008000;">!=</span> <span style="color: #0600FF; font-weight: bold;">null</span><span style="color: #008000;">&#41;</span>
					<span style="color: #008000;">&#123;</span>
						<span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008000;">&#40;</span>Stream productImageStream <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> <span style="color: #000000;">System.<span style="color: #0000FF;">IO</span></span><span style="color: #008000;">.</span><span style="color: #0000FF;">MemoryStream</span><span style="color: #008000;">&#40;</span>productImageByte<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
						<span style="color: #008000;">&#123;</span>
							<span style="color: #0600FF; font-weight: bold;">return</span> Image<span style="color: #008000;">.</span><span style="color: #0000FF;">FromStream</span><span style="color: #008000;">&#40;</span>productImageStream<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
						<span style="color: #008000;">&#125;</span>
					<span style="color: #008000;">&#125;</span>
				<span style="color: #008000;">&#125;</span>
				<span style="color: #0600FF; font-weight: bold;">catch</span>
				<span style="color: #008000;">&#123;</span>
					<span style="color: #0600FF; font-weight: bold;">throw</span><span style="color: #008000;">;</span>
				<span style="color: #008000;">&#125;</span>
			<span style="color: #008000;">&#125;</span>
		<span style="color: #008000;">&#125;</span>
		<span style="color: #0600FF; font-weight: bold;">catch</span>
		<span style="color: #008000;">&#123;</span>
			<span style="color: #0600FF; font-weight: bold;">throw</span><span style="color: #008000;">;</span>
		<span style="color: #008000;">&#125;</span>
	<span style="color: #008000;">&#125;</span>
	<span style="color: #0600FF; font-weight: bold;">return</span> <span style="color: #0600FF; font-weight: bold;">null</span><span style="color: #008000;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div></div>

</div>
<div>
<h3>VisualBasic</h3>
</div>

<div class="my_syntax_box"><span class="my_syntax_selecall"><a href="javascript:;" onclick="selectCode(this); return false;">Selec All</a> </span><span class="my_syntax_Bar">Code:</span><div class="my_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
</pre></td><td class="code"><pre class="vbnet" style="font-family:monospace;"><span style="color: #0600FF;">Function</span> GetProductImage<span style="color: #000000;">&#40;</span><span style="color: #FF8000;">ByVal</span> productName <span style="color: #FF8000;">As</span> <span style="color: #FF8000;">String</span><span style="color: #000000;">&#41;</span> <span style="color: #FF8000;">As</span> Image
	Using pgConnection <span style="color: #FF8000;">As</span> NpgsqlConnection <span style="color: #008000;">=</span> <span style="color: #FF8000;">New</span> NpgsqlConnection<span style="color: #000000;">&#40;</span><span style="color: #808080;">&quot;server=localhost;user id=postgres;password=binod;database=mintgres&quot;</span><span style="color: #000000;">&#41;</span>
		<span style="color: #0600FF;">Try</span>
			Using pgCommand <span style="color: #FF8000;">As</span> NpgsqlCommand <span style="color: #008000;">=</span> <span style="color: #FF8000;">New</span> NpgsqlCommand<span style="color: #000000;">&#40;</span><span style="color: #808080;">&quot;SELECT product_image FROM products WHERE product_name=@ProductName;&quot;</span>, pgConnection<span style="color: #000000;">&#41;</span>
				pgCommand.<span style="color: #0000FF;">Parameters</span>.<span style="color: #0000FF;">AddWithValue</span><span style="color: #000000;">&#40;</span><span style="color: #808080;">&quot;@ProductName&quot;</span>, productName<span style="color: #000000;">&#41;</span>
				<span style="color: #0600FF;">Try</span>
					pgConnection.<span style="color: #0600FF;">Open</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
					<span style="color: #0600FF;">Dim</span> productImageByte <span style="color: #FF8000;">As</span> <span style="color: #FF0000;">Byte</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #008000;">=</span> TryCast<span style="color: #000000;">&#40;</span>pgCommand.<span style="color: #0000FF;">ExecuteScalar</span>, <span style="color: #FF0000;">Byte</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span>
					<span style="color: #0600FF;">If</span> productImageByte <span style="color: #FF8000;">IsNot</span> <span style="color: #FF8000;">Nothing</span> <span style="color: #FF8000;">Then</span>
						Using productImageStream <span style="color: #FF8000;">As</span> Stream <span style="color: #008000;">=</span> <span style="color: #FF8000;">New</span> System.<span style="color: #0000FF;">IO</span>.<span style="color: #0000FF;">MemoryStream</span><span style="color: #000000;">&#40;</span>productImageByte<span style="color: #000000;">&#41;</span>
							<span style="color: #FF8000;">Return</span> Image.<span style="color: #0000FF;">FromStream</span><span style="color: #000000;">&#40;</span>productImageStream<span style="color: #000000;">&#41;</span>
						<span style="color: #0600FF;">End</span> Using
					<span style="color: #0600FF;">End</span> <span style="color: #0600FF;">If</span>
				<span style="color: #0600FF;">Catch</span>
					<span style="color: #FF8000;">Throw</span>
				<span style="color: #0600FF;">End</span> <span style="color: #0600FF;">Try</span>
			<span style="color: #0600FF;">End</span> Using
		<span style="color: #0600FF;">Catch</span> ex <span style="color: #FF8000;">As</span> IOException
			<span style="color: #FF8000;">Throw</span>
		<span style="color: #0600FF;">End</span> <span style="color: #0600FF;">Try</span>
	<span style="color: #0600FF;">End</span> Using
	<span style="color: #FF8000;">Return</span> <span style="color: #FF8000;">Nothing</span>
<span style="color: #0600FF;">End</span> <span style="color: #0600FF;">Function</span></pre></td></tr></table></div></div>

</div>
]]></content:encoded>
			<wfw:commentRss>http://planetearthsolution.com/binodsblog/2011/07/05/save-and-retrieve-image-in-postgresql-server-using-microsoft-net/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
