<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>STORY of AODDY.</title>
	
	<link>http://www.aoddy.com</link>
	<description>If you lose yourself, you lose everything. -- Michael Scofield</description>
	<lastBuildDate>Sat, 17 Jul 2010 00:06:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<feedburner:info uri="aoddy" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/feedburner/UKqh" /><feedburner:info uri="feedburner/ukqh" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>How to query data from MySQL via ODBC by C programming.</title>
		<link>http://feedproxy.google.com/~r/feedburner/UKqh/~3/9CjQLsG8GHY/</link>
		<comments>http://www.aoddy.com/2010/07/17/how-to-query-data-from-mysql-via-odbc-by-c-programming/#comments</comments>
		<pubDate>Sat, 17 Jul 2010 00:06:55 +0000</pubDate>
		<dc:creator>aoddy</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[C/C++]]></category>
		<category><![CDATA[ODBC]]></category>

		<guid isPermaLink="false">http://www.aoddy.com/?p=1199</guid>
		<description><![CDATA[From 2 previous post about C programming, MySQL and ODBC. How to connect MySQL5 via ODBC by C programming . How to INSERT data into MySQL via ODBC by C programming. And today, I will show how to query and &#8230; <a href="http://www.aoddy.com/2010/07/17/how-to-query-data-from-mysql-via-odbc-by-c-programming/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>From 2 previous post about C programming, MySQL and ODBC.</p>
<ol>
<li><a href="http://www.aoddy.com/2010/07/15/how-to-connect-mysql5-via-odbc-by-c-programming/" target="_blank">How to connect MySQL5 via ODBC by C programming .</a></li>
<li><a href="http://www.aoddy.com/2010/07/16/how-to-insert-data-into-mysql-via-odbc-by-c-programming/" target="_blank">How to INSERT data into MySQL via ODBC by C programming.</a></li>
</ol>
<p>And today, I will show how to query and display value on screen. Many part of below source code come form those articles so you should read them before..</p>
<p><span id="more-1199"></span></p>
<p>First, we should create &#8220;struct&#8221; variable for keeping data from database when we fetch all of data which depends on condition in SQL command. Example :</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;">  <span style="color: #993333;">struct</span> <span style="color: #009900;">&#123;</span>
	SQLINTEGER id<span style="color: #339933;">;</span>
        SQLCHAR code<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">3</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
	SQLCHAR X<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">8</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
	SQLCHAR Y<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">8</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span> row<span style="color: #339933;">;</span></pre></div></div>

<p>Second, we need to allocate memory &amp; execute SQL command which you can see in <a href="http://www.aoddy.com/2010/07/16/how-to-insert-data-into-mysql-via-odbc-by-c-programming/">previous post</a> (I don&#8217;t want to show them again..:P ).</p>
<p>Third, after our software sends command to server, the server should return some data back and put all of data into &#8220;SQLRETURN&#8221; variable (in this case, the name of variable is a &#8220;ret&#8221;).</p>
<p>Now, we need to map the field of data table to &#8220;Struct&#8221; variable which was prepared already.(Now, we don&#8217;t get data from database yet, just prepare some space for data.) Like this:</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">// Map data from all columns with struct variable //</span>
ret <span style="color: #339933;">=</span> SQLBindCol<span style="color: #009900;">&#40;</span>stmt<span style="color: #339933;">,</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">,</span> SQL_C_SLONG<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span>row.<span style="color: #202020;">id</span><span style="color: #339933;">,</span> <span style="color: #993333;">sizeof</span><span style="color: #009900;">&#40;</span>row.<span style="color: #202020;">id</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> NULL<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
ret <span style="color: #339933;">=</span> SQLBindCol<span style="color: #009900;">&#40;</span>stmt<span style="color: #339933;">,</span> <span style="color: #0000dd;">2</span><span style="color: #339933;">,</span> SQL_C_CHAR<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span>row.<span style="color: #202020;">code</span><span style="color: #339933;">,</span> <span style="color: #993333;">sizeof</span><span style="color: #009900;">&#40;</span>row.<span style="color: #202020;">code</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> NULL<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
ret <span style="color: #339933;">=</span> SQLBindCol<span style="color: #009900;">&#40;</span>stmt<span style="color: #339933;">,</span> <span style="color: #0000dd;">3</span><span style="color: #339933;">,</span> SQL_C_CHAR<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span>row.<span style="color: #202020;">X</span><span style="color: #339933;">,</span> <span style="color: #993333;">sizeof</span><span style="color: #009900;">&#40;</span>row.<span style="color: #202020;">X</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> NULL<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
ret <span style="color: #339933;">=</span> SQLBindCol<span style="color: #009900;">&#40;</span>stmt<span style="color: #339933;">,</span> <span style="color: #0000dd;">4</span><span style="color: #339933;">,</span> SQL_C_CHAR<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span>row.<span style="color: #202020;">Y</span><span style="color: #339933;">,</span> <span style="color: #993333;">sizeof</span><span style="color: #009900;">&#40;</span>row.<span style="color: #202020;">Y</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> NULL<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Finally, we need to fetch all of data inside the &#8220;SQLHSTMT&#8221; variable (in this example define a name is &#8220;ret&#8221;) and show them on display:</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span>SQL_SUCCEEDED<span style="color: #009900;">&#40;</span>ret <span style="color: #339933;">=</span> SQLFetch<span style="color: #009900;">&#40;</span>stmt<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
     <span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;%d|%s|%s|%s|<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> row.<span style="color: #202020;">id</span><span style="color: #339933;">,</span> row.<span style="color: #202020;">code</span><span style="color: #339933;">,</span> row.<span style="color: #202020;">X</span><span style="color: #339933;">,</span> row.<span style="color: #202020;">Y</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Below is example output. (You can stop for seeing output on display by using debug mode. (red ball).)</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;">Connected
Selected OK<span style="color: #339933;">!!</span>. <span style="color: #202020;">SQL</span> was<span style="color: #339933;">:</span>
<span style="color: #0000dd;">1</span><span style="color: #339933;">|</span>th<span style="color: #339933;">|</span><span style="color: #0000dd;">1234567</span><span style="color: #339933;">|</span><span style="color: #0000dd;">7654321</span><span style="color: #339933;">|</span>
<span style="color: #0000dd;">2</span><span style="color: #339933;">|</span>jp<span style="color: #339933;">|</span><span style="color: #0000dd;">1234567</span><span style="color: #339933;">|</span><span style="color: #0000dd;">7654321</span><span style="color: #339933;">|</span>
<span style="color: #0000dd;">3</span><span style="color: #339933;">|</span>ru<span style="color: #339933;">|</span><span style="color: #0000dd;">1234567</span><span style="color: #339933;">|</span><span style="color: #0000dd;">7654321</span><span style="color: #339933;">|</span>
<span style="color: #0000dd;">4</span><span style="color: #339933;">|</span>ru<span style="color: #339933;">|</span><span style="color: #0000dd;">1234567</span><span style="color: #339933;">|</span><span style="color: #0000dd;">7654321</span><span style="color: #339933;">|</span>
<span style="color: #0000dd;">5</span><span style="color: #339933;">|</span>ru<span style="color: #339933;">|</span><span style="color: #0000dd;">1234567</span><span style="color: #339933;">|</span><span style="color: #0000dd;">7654321</span><span style="color: #339933;">|</span>
<span style="color: #0000dd;">6</span><span style="color: #339933;">|</span>ru<span style="color: #339933;">|</span><span style="color: #0000dd;">1234567</span><span style="color: #339933;">|</span><span style="color: #0000dd;">7654321</span><span style="color: #339933;">|</span>
<span style="color: #0000dd;">7</span><span style="color: #339933;">|</span>ru<span style="color: #339933;">|</span><span style="color: #0000dd;">1234567</span><span style="color: #339933;">|</span><span style="color: #0000dd;">7654321</span><span style="color: #339933;">|</span>
<span style="color: #0000dd;">8</span><span style="color: #339933;">|</span>ru<span style="color: #339933;">|</span><span style="color: #0000dd;">1234567</span><span style="color: #339933;">|</span><span style="color: #0000dd;">7654321</span><span style="color: #339933;">|</span>
<span style="color: #0000dd;">9</span><span style="color: #339933;">|</span>ru<span style="color: #339933;">|</span><span style="color: #0000dd;">1234567</span><span style="color: #339933;">|</span><span style="color: #0000dd;">7654321</span><span style="color: #339933;">|</span></pre></div></div>

<p>And this is a full source code..</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">#include &amp;lt;windows.h&amp;gt;</span>
<span style="color: #339933;">#include &amp;lt;stdio.h&amp;gt;</span>
<span style="color: #339933;">#include &amp;lt;sql.h&amp;gt;</span>
<span style="color: #339933;">#include &amp;lt;sqlext.h&amp;gt;</span>
&nbsp;
<span style="color: #993333;">static</span> <span style="color: #993333;">void</span> extract_error<span style="color: #009900;">&#40;</span>
 <span style="color: #993333;">char</span> <span style="color: #339933;">*</span>fn<span style="color: #339933;">,</span>
 SQLHANDLE handle<span style="color: #339933;">,</span>
 SQLSMALLINT type<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
main<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
 SQLHENV env<span style="color: #339933;">;</span>
 SQLHDBC dbc<span style="color: #339933;">;</span>
 SQLRETURN ret<span style="color: #339933;">;</span> <span style="color: #808080; font-style: italic;">/* ODBC API return status */</span>
 SQLWCHAR outstr<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">1024</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
 SQLSMALLINT outstrlen<span style="color: #339933;">;</span>    
 SQLHSTMT stmt<span style="color: #339933;">;</span>
&nbsp;
 <span style="color: #993333;">struct</span> <span style="color: #009900;">&#123;</span>
 SQLINTEGER id<span style="color: #339933;">;</span>
 SQLCHAR code<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">3</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
 SQLCHAR X<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">8</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
 SQLCHAR Y<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">8</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
 <span style="color: #009900;">&#125;</span> row<span style="color: #339933;">;</span>
&nbsp;
 <span style="color: #808080; font-style: italic;">/* Allocate an environment handle */</span>
 SQLAllocHandle<span style="color: #009900;">&#40;</span>SQL_HANDLE_ENV<span style="color: #339933;">,</span> SQL_NULL_HANDLE<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span>env<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #808080; font-style: italic;">/* We want ODBC 3 support */</span>
 SQLSetEnvAttr<span style="color: #009900;">&#40;</span>env<span style="color: #339933;">,</span> SQL_ATTR_ODBC_VERSION<span style="color: #339933;">,</span> <span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span> <span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span> SQL_OV_ODBC3<span style="color: #339933;">,</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #808080; font-style: italic;">/* Allocate a connection handle */</span>
 SQLAllocHandle<span style="color: #009900;">&#40;</span>SQL_HANDLE_DBC<span style="color: #339933;">,</span> env<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span>dbc<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #808080; font-style: italic;">/* Connect to the DSN mydsn */</span>
 ret <span style="color: #339933;">=</span> SQLDriverConnect<span style="color: #009900;">&#40;</span>dbc<span style="color: #339933;">,</span> NULL<span style="color: #339933;">,</span> <span style="color: #009900;">&#40;</span>SQLWCHAR <span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span>L<span style="color: #ff0000;">&quot;DSN=DSNMySQL&quot;</span><span style="color: #339933;">,</span> SQL_NTS<span style="color: #339933;">,</span> <span style="color: #009900;">&#40;</span>SQLWCHAR <span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span>outstr<span style="color: #339933;">,</span> <span style="color: #993333;">sizeof</span><span style="color: #009900;">&#40;</span>outstr<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span>outstrlen<span style="color: #339933;">,</span> SQL_DRIVER_COMPLETE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
 <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>SQL_SUCCEEDED<span style="color: #009900;">&#40;</span>ret<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
 <span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Connected<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
 <span style="color: #666666; font-style: italic;">// DISPLAY DATA //</span>
 <span style="color: #808080; font-style: italic;">/* Allocate a statement handle */</span>
 ret <span style="color: #339933;">=</span> SQLAllocHandle<span style="color: #009900;">&#40;</span>SQL_HANDLE_STMT<span style="color: #339933;">,</span> dbc<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span>stmt<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>ret <span style="color: #339933;">!=</span> SQL_SUCCESS <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;&amp;</span>amp<span style="color: #339933;">;</span> ret <span style="color: #339933;">!=</span> SQL_SUCCESS_WITH_INFO<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
 <span style="color: #666666; font-style: italic;">//    char message[200];</span>
 <span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Error Allocating Handle: %d<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> ret<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #009900;">&#125;</span><span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
 SQLWCHAR<span style="color: #339933;">*</span> SQL <span style="color: #339933;">=</span> L<span style="color: #ff0000;">&quot;SELECT * FROM location_country&quot;</span><span style="color: #339933;">;</span>
 ret <span style="color: #339933;">=</span> SQLExecDirect<span style="color: #009900;">&#40;</span>stmt<span style="color: #339933;">,</span> SQL<span style="color: #339933;">,</span> SQL_NTS<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>ret <span style="color: #339933;">==</span> SQL_SUCCESS <span style="color: #339933;">||</span> ret <span style="color: #339933;">==</span> SQL_SUCCESS_WITH_INFO<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
 <span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Selected OK!!. SQL was:<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
 <span style="color: #666666; font-style: italic;">// Map data from all columns with struct variable //</span>
 ret <span style="color: #339933;">=</span> SQLBindCol<span style="color: #009900;">&#40;</span>stmt<span style="color: #339933;">,</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">,</span> SQL_C_SLONG<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span>row.<span style="color: #202020;">id</span> <span style="color: #339933;">,</span> <span style="color: #993333;">sizeof</span><span style="color: #009900;">&#40;</span>row.<span style="color: #202020;">id</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> NULL<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 ret <span style="color: #339933;">=</span> SQLBindCol<span style="color: #009900;">&#40;</span>stmt<span style="color: #339933;">,</span> <span style="color: #0000dd;">2</span><span style="color: #339933;">,</span> SQL_C_CHAR<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span>row.<span style="color: #202020;">code</span> <span style="color: #339933;">,</span> <span style="color: #993333;">sizeof</span><span style="color: #009900;">&#40;</span>row.<span style="color: #202020;">code</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> NULL<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 ret <span style="color: #339933;">=</span> SQLBindCol<span style="color: #009900;">&#40;</span>stmt<span style="color: #339933;">,</span> <span style="color: #0000dd;">3</span><span style="color: #339933;">,</span> SQL_C_CHAR<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span>row.<span style="color: #202020;">X</span> <span style="color: #339933;">,</span> <span style="color: #993333;">sizeof</span><span style="color: #009900;">&#40;</span>row.<span style="color: #202020;">X</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> NULL<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 ret <span style="color: #339933;">=</span> SQLBindCol<span style="color: #009900;">&#40;</span>stmt<span style="color: #339933;">,</span> <span style="color: #0000dd;">4</span><span style="color: #339933;">,</span> SQL_C_CHAR<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span>row.<span style="color: #202020;">Y</span> <span style="color: #339933;">,</span> <span style="color: #993333;">sizeof</span><span style="color: #009900;">&#40;</span>row.<span style="color: #202020;">Y</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> NULL<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
 <span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span>SQL_SUCCEEDED<span style="color: #009900;">&#40;</span>ret <span style="color: #339933;">=</span> SQLFetch<span style="color: #009900;">&#40;</span>stmt<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
 <span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;%d|%s|%s|%s|<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> row.<span style="color: #202020;">id</span><span style="color: #339933;">,</span> row.<span style="color: #202020;">code</span><span style="color: #339933;">,</span> row.<span style="color: #202020;">X</span><span style="color: #339933;">,</span> row.<span style="color: #202020;">Y</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #009900;">&#125;</span>
 <span style="color: #009900;">&#125;</span>
 SQLFreeHandle<span style="color: #009900;">&#40;</span>SQL_HANDLE_STMT<span style="color: #339933;">,</span> stmt<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #009900;">&#125;</span>
&nbsp;
 SQLDisconnect<span style="color: #009900;">&#40;</span>dbc<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>        <span style="color: #808080; font-style: italic;">/* disconnect from driver */</span>
 <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
 fprintf<span style="color: #009900;">&#40;</span>stderr<span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;Failed to connect<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 extract_error<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;SQLDriverConnect&quot;</span><span style="color: #339933;">,</span> dbc<span style="color: #339933;">,</span> SQL_HANDLE_DBC<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #009900;">&#125;</span>
 <span style="color: #808080; font-style: italic;">/* free up allocated handles */</span>
 SQLFreeHandle<span style="color: #009900;">&#40;</span>SQL_HANDLE_DBC<span style="color: #339933;">,</span> dbc<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 SQLFreeHandle<span style="color: #009900;">&#40;</span>SQL_HANDLE_ENV<span style="color: #339933;">,</span> env<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">static</span> <span style="color: #993333;">void</span> extract_error<span style="color: #009900;">&#40;</span>
 <span style="color: #993333;">char</span> <span style="color: #339933;">*</span>fn<span style="color: #339933;">,</span>
 SQLHANDLE handle<span style="color: #339933;">,</span>
 SQLSMALLINT type
<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Ei ei &#8230; Good night. <img src='http://www.aoddy.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p></p>

<p><a href="http://feedads.g.doubleclick.net/~a/RzGIjsr3raIHgdwDFVenPfqsvwc/0/da"><img src="http://feedads.g.doubleclick.net/~a/RzGIjsr3raIHgdwDFVenPfqsvwc/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/RzGIjsr3raIHgdwDFVenPfqsvwc/1/da"><img src="http://feedads.g.doubleclick.net/~a/RzGIjsr3raIHgdwDFVenPfqsvwc/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/feedburner/UKqh/~4/9CjQLsG8GHY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.aoddy.com/2010/07/17/how-to-query-data-from-mysql-via-odbc-by-c-programming/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.aoddy.com/2010/07/17/how-to-query-data-from-mysql-via-odbc-by-c-programming/</feedburner:origLink></item>
		<item>
		<title>How to INSERT data into MySQL via ODBC by C programming.</title>
		<link>http://feedproxy.google.com/~r/feedburner/UKqh/~3/FZIpR0OuvR4/</link>
		<comments>http://www.aoddy.com/2010/07/16/how-to-insert-data-into-mysql-via-odbc-by-c-programming/#comments</comments>
		<pubDate>Thu, 15 Jul 2010 23:28:31 +0000</pubDate>
		<dc:creator>aoddy</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[C/C++]]></category>
		<category><![CDATA[ODBC]]></category>

		<guid isPermaLink="false">http://www.aoddy.com/?p=1192</guid>
		<description><![CDATA[Yesterday, we talked about &#8220;How to connect MySQL5 via ODBC by C programming.&#8221; I recommend if you are not expert in C programming please see that post firstly. Because many part of source in this post are come from that &#8230; <a href="http://www.aoddy.com/2010/07/16/how-to-insert-data-into-mysql-via-odbc-by-c-programming/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Yesterday, we talked about &#8220;<a href="http://www.aoddy.com/2010/07/15/how-to-connect-mysql5-via-odbc-by-c-programming/" target="_blank">How to connect MySQL5 via ODBC by C programming.</a>&#8221; I recommend if you are not expert in C programming please see that post firstly. Because many part of source in this post are come from that post.</p>
<p style="text-align: justify;">Today, I need to show how to insert data after we can create a connection between our program and MySQL.</p>
<p style="text-align: justify;">Before you go to to see my source code, I would like to show my &#8220;data table&#8221; inside MySQL database.</p>
<p style="text-align: justify;"><span id="more-1192"></span></p>
<p></p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;">mysql<span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;</span> use zonetic<span style="color: #339933;">;</span>
Database changed
mysql<span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;</span> describe location_country<span style="color: #339933;">;</span>
<span style="color: #339933;">+-------+------------------+------+-----+---------+----------------+</span>
<span style="color: #339933;">|</span> Field <span style="color: #339933;">|</span> Type             <span style="color: #339933;">|</span> Null <span style="color: #339933;">|</span> Key <span style="color: #339933;">|</span> Default <span style="color: #339933;">|</span> Extra          <span style="color: #339933;">|</span>
<span style="color: #339933;">+-------+------------------+------+-----+---------+----------------+</span>
<span style="color: #339933;">|</span> id    <span style="color: #339933;">|</span> <span style="color: #993333;">int</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">10</span><span style="color: #009900;">&#41;</span> <span style="color: #993333;">unsigned</span> <span style="color: #339933;">|</span> NO   <span style="color: #339933;">|</span> PRI <span style="color: #339933;">|</span> NULL    <span style="color: #339933;">|</span> auto_increment <span style="color: #339933;">|</span>
<span style="color: #339933;">|</span> code  <span style="color: #339933;">|</span> varchar<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">2</span><span style="color: #009900;">&#41;</span>       <span style="color: #339933;">|</span> YES  <span style="color: #339933;">|</span>     <span style="color: #339933;">|</span> NULL    <span style="color: #339933;">|</span>                <span style="color: #339933;">|</span>
<span style="color: #339933;">|</span> X     <span style="color: #339933;">|</span> varchar<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">7</span><span style="color: #009900;">&#41;</span>       <span style="color: #339933;">|</span> YES  <span style="color: #339933;">|</span>     <span style="color: #339933;">|</span> NULL    <span style="color: #339933;">|</span>                <span style="color: #339933;">|</span>
<span style="color: #339933;">|</span> Y     <span style="color: #339933;">|</span> varchar<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">7</span><span style="color: #009900;">&#41;</span>       <span style="color: #339933;">|</span> YES  <span style="color: #339933;">|</span>     <span style="color: #339933;">|</span> NULL    <span style="color: #339933;">|</span>                <span style="color: #339933;">|</span>
<span style="color: #339933;">+-------+------------------+------+-----+---------+----------------+</span>
<span style="color: #0000dd;">4</span> rows in set <span style="color: #009900;">&#40;</span><span style="color:#800080;">0.20</span> sec<span style="color: #009900;">&#41;</span></pre></div></div>

<p style="text-align: justify;">First of all, we need to allocate a &#8220;statement handle&#8221; so as to reserve memory for put our SQL command statement like this:</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;">ret <span style="color: #339933;">=</span> SQLAllocHandle<span style="color: #009900;">&#40;</span>SQL_HANDLE_STMT<span style="color: #339933;">,</span> dbc<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span>stmt<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p style="text-align: justify;">Second, we need to create a SQL statement like this:</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;">SQLWCHAR<span style="color: #339933;">*</span> SQL <span style="color: #339933;">=</span> L<span style="color: #ff0000;">&quot;INSERT INTO location_country(code, X, Y) VALUES('ru','1234567','7654321')&quot;</span><span style="color: #339933;">;</span></pre></div></div>

<p style="text-align: justify;">DON&#8217;T FORGET to put &#8220;<span style="text-decoration: underline;"><strong>L</strong></span>&#8221; at first of SQL Command.</p>
<p style="text-align: justify;">Third, we put our SQL statement in function&#8221;SQLExecDirect&#8221; so as to execute SQL command.</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;">ret <span style="color: #339933;">=</span> SQLExecDirect<span style="color: #009900;">&#40;</span>stmt<span style="color: #339933;">,</span> SQL<span style="color: #339933;">,</span> SQL_NTS<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Finally, we need to free our memory after we send our command by fuction &#8220;SQLFreeHandle&#8221;</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;">SQLFreeHandle<span style="color: #009900;">&#40;</span>SQL_HANDLE_STMT<span style="color: #339933;">,</span> stmt<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Below is my full source code&#8230;</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">#include &amp;lt;windows.h&amp;gt;</span>
<span style="color: #339933;">#include &amp;lt;stdio.h&amp;gt;</span>
<span style="color: #339933;">#include &amp;lt;sql.h&amp;gt;</span>
<span style="color: #339933;">#include &amp;lt;sqlext.h&amp;gt;</span>
&nbsp;
<span style="color: #993333;">static</span> <span style="color: #993333;">void</span> extract_error<span style="color: #009900;">&#40;</span>
 <span style="color: #993333;">char</span> <span style="color: #339933;">*</span>fn<span style="color: #339933;">,</span>
 SQLHANDLE handle<span style="color: #339933;">,</span>
 SQLSMALLINT type<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
main<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
 SQLHENV env<span style="color: #339933;">;</span>
 SQLHDBC dbc<span style="color: #339933;">;</span>
 SQLRETURN ret<span style="color: #339933;">;</span> <span style="color: #808080; font-style: italic;">/* ODBC API return status */</span>
 SQLWCHAR outstr<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">1024</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
 SQLSMALLINT outstrlen<span style="color: #339933;">;</span>
 SQLHSTMT stmt<span style="color: #339933;">;</span>
&nbsp;
 <span style="color: #808080; font-style: italic;">/* Allocate an environment handle */</span>
 SQLAllocHandle<span style="color: #009900;">&#40;</span>SQL_HANDLE_ENV<span style="color: #339933;">,</span> SQL_NULL_HANDLE<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span>env<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #808080; font-style: italic;">/* We want ODBC 3 support */</span>
 SQLSetEnvAttr<span style="color: #009900;">&#40;</span>env<span style="color: #339933;">,</span> SQL_ATTR_ODBC_VERSION<span style="color: #339933;">,</span> <span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span> <span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span> SQL_OV_ODBC3<span style="color: #339933;">,</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #808080; font-style: italic;">/* Allocate a connection handle */</span>
 SQLAllocHandle<span style="color: #009900;">&#40;</span>SQL_HANDLE_DBC<span style="color: #339933;">,</span> env<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span>dbc<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #808080; font-style: italic;">/* Connect to the DSN mydsn */</span>
 ret <span style="color: #339933;">=</span> SQLDriverConnect<span style="color: #009900;">&#40;</span>dbc<span style="color: #339933;">,</span> NULL<span style="color: #339933;">,</span> <span style="color: #009900;">&#40;</span>SQLWCHAR <span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span>L<span style="color: #ff0000;">&quot;DSN=DSNMySQL&quot;</span><span style="color: #339933;">,</span> SQL_NTS<span style="color: #339933;">,</span> <span style="color: #009900;">&#40;</span>SQLWCHAR <span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span>outstr<span style="color: #339933;">,</span> <span style="color: #993333;">sizeof</span><span style="color: #009900;">&#40;</span>outstr<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span>outstrlen<span style="color: #339933;">,</span> SQL_DRIVER_COMPLETE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
 <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>SQL_SUCCEEDED<span style="color: #009900;">&#40;</span>ret<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
 <span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Connected<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
 <span style="color: #808080; font-style: italic;">/* Allocate a statement handle */</span>
 ret <span style="color: #339933;">=</span> SQLAllocHandle<span style="color: #009900;">&#40;</span>SQL_HANDLE_STMT<span style="color: #339933;">,</span> dbc<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span>stmt<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
 <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>ret <span style="color: #339933;">!=</span> SQL_SUCCESS <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;&amp;</span>amp<span style="color: #339933;">;</span> ret <span style="color: #339933;">!=</span> SQL_SUCCESS_WITH_INFO<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
 <span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Error Allocating Handle: %d<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> ret<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #009900;">&#125;</span><span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
 SQLWCHAR<span style="color: #339933;">*</span> SQL <span style="color: #339933;">=</span> L<span style="color: #ff0000;">&quot;INSERT INTO location_country(code, X, Y) VALUES('jp','1234567','7654321')&quot;</span><span style="color: #339933;">;</span>
 ret <span style="color: #339933;">=</span> SQLExecDirect<span style="color: #009900;">&#40;</span>stmt<span style="color: #339933;">,</span> SQL<span style="color: #339933;">,</span> SQL_NTS<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>ret <span style="color: #339933;">==</span> SQL_SUCCESS <span style="color: #339933;">||</span> ret <span style="color: #339933;">==</span> SQL_SUCCESS_WITH_INFO<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
 <span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Insert data OK!!. SQL was:<span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\n</span>%s<span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #009900;">&#125;</span>
 SQLFreeHandle<span style="color: #009900;">&#40;</span>SQL_HANDLE_STMT<span style="color: #339933;">,</span> stmt<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #009900;">&#125;</span>
 SQLDisconnect<span style="color: #009900;">&#40;</span>dbc<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>        <span style="color: #808080; font-style: italic;">/* disconnect from driver */</span>
 <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
 fprintf<span style="color: #009900;">&#40;</span>stderr<span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;Failed to connect<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 extract_error<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;SQLDriverConnect&quot;</span><span style="color: #339933;">,</span> dbc<span style="color: #339933;">,</span> SQL_HANDLE_DBC<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #009900;">&#125;</span>
 <span style="color: #808080; font-style: italic;">/* free up allocated handles */</span>
 SQLFreeHandle<span style="color: #009900;">&#40;</span>SQL_HANDLE_DBC<span style="color: #339933;">,</span> dbc<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 SQLFreeHandle<span style="color: #009900;">&#40;</span>SQL_HANDLE_ENV<span style="color: #339933;">,</span> env<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">static</span> <span style="color: #993333;">void</span> extract_error<span style="color: #009900;">&#40;</span>
 <span style="color: #993333;">char</span> <span style="color: #339933;">*</span>fn<span style="color: #339933;">,</span>
 SQLHANDLE handle<span style="color: #339933;">,</span>
 SQLSMALLINT type
<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span></pre></div></div>

<p></p>
<p>Special thanks:</p>
<p><a href="http://www.informit.com/library/content.aspx?b=Visual_C_PlusPlus&amp;seqNum=183" target="_blank">http://www.informit.com/library/content.aspx?b=Visual_C_PlusPlus&amp;seqNum=183</a></p>
<p><a href="http://cs.ua.edu/components/integrated/handouts/08-odbc-example.pdf" target="_blank">http://cs.ua.edu/components/integrated/handouts/08-odbc-example.pdf</a></p>
<p><a href="http://www.easysoft.com/developer/languages/c/odbc-tutorial-fetching-results.html" target="_blank">http://www.easysoft.com/developer/languages/c/odbc-tutorial-fetching-results.html</a></p>

<p><a href="http://feedads.g.doubleclick.net/~a/BH-v3zfdC0FCGnZrnjOP1oVU70A/0/da"><img src="http://feedads.g.doubleclick.net/~a/BH-v3zfdC0FCGnZrnjOP1oVU70A/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/BH-v3zfdC0FCGnZrnjOP1oVU70A/1/da"><img src="http://feedads.g.doubleclick.net/~a/BH-v3zfdC0FCGnZrnjOP1oVU70A/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/feedburner/UKqh/~4/FZIpR0OuvR4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.aoddy.com/2010/07/16/how-to-insert-data-into-mysql-via-odbc-by-c-programming/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.aoddy.com/2010/07/16/how-to-insert-data-into-mysql-via-odbc-by-c-programming/</feedburner:origLink></item>
		<item>
		<title>How to connect MySQL5 via ODBC by C programming .</title>
		<link>http://feedproxy.google.com/~r/feedburner/UKqh/~3/0vFKi0Di1BA/</link>
		<comments>http://www.aoddy.com/2010/07/15/how-to-connect-mysql5-via-odbc-by-c-programming/#comments</comments>
		<pubDate>Wed, 14 Jul 2010 22:00:47 +0000</pubDate>
		<dc:creator>aoddy</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[ODBC]]></category>

		<guid isPermaLink="false">http://www.aoddy.com/?p=1179</guid>
		<description><![CDATA[3 Days for trying to fix this problem.. Last week, I needed to write a C program to connect the MySQL database via ODBC. The big problem is in part of function &#8220;SQLDriverConnect&#8221; because there are many arguments that I &#8230; <a href="http://www.aoddy.com/2010/07/15/how-to-connect-mysql5-via-odbc-by-c-programming/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>3 Days for trying to fix this problem.. Last week, I needed to write a C program to connect the MySQL database via ODBC. The big problem is in part of function &#8220;SQLDriverConnect&#8221; because there are many arguments that I must put truly. Finally, I can find an exactly argument &#8230; let me explain.. now.</p>
<p><span id="more-1179"></span><br />
<br />
First of all, we should know the importance function which we should create/use before:</p>
<ul>
<li>SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &amp;env) : We need to allocate an environment handle.</li>
<li>SQLSetEnvAttr(env, SQL_ATTR_ODBC_VERSION, (void *) SQL_OV_ODBC3, 0) : We need to specific version of ODBC. Today is version 3.</li>
<li>SQLAllocHandle(SQL_HANDLE_DBC, env, &amp;dbc) : We need to allocate the connection for communication between our program (that we are developing) and MySQL.</li>
<li>SQLDriverConnect : Start to create the connection (I FOUND THE BIG PROBLEM HERE!!!)</li>
</ul>
<p>Let me describe my environment before we go to the part of C programming.</p>
<ul>
<li>Windows XP Service pack 2 (Of course, I installed it on VirtualBox 3.2.6 r63112.)</li>
<li>MySQL version &#8220;<strong>mysql Ver 14.14 Distrib 5.1.48, for Win32 (ia32)</strong>&#8221; &#8212; You can check your MySQL version from command line &#8220;mysql &#8211;version&#8221;</li>
<li>MySQL connector (We need it because it has ODBC) version &#8220;<strong>v5.01.0006</strong>&#8220;</li>
<li>Microsoft visual studio 2008 (version 9)</li>
</ul>
<p>After you install all of software in your computer you should create the &#8220;Data Source&#8221; first. It is very easy to do that you can see many tutorial in WWW or <a href="http://dev.mysql.com/doc/refman/5.0/en/connector-odbc-configuration-dsn-windows.html" target="_blank">click here</a>. In my this project, my DSN is &#8220;DSNMySQL&#8221;. (You will see this &#8220;string&#8221; in my source code below.)</p>
<p>Next&#8230;I wish to show at the first of step even how to create a project for C programming in Visual Studio C++. Let go &#8211;</p>
<ol>
<li>File -&gt; New -&gt; Project -&gt; Visual C++ -&gt; CLR Empty project -&gt; Enter (Don&#8217;t forget to put your name project &#8212; Up to you <img src='http://www.aoddy.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  )</li>
<li>Create a new source code inside &#8220;Source code&#8221; directory.. (Right click on there first!!)</li>
<li>Visual C++ &#8211; &gt; Code -&gt; C++ File (.cpp) <strong>BUT</strong> please put your source by .C extension.</li>
</ol>
<p>Put your this source code :</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">#include &amp;lt;windows.h&amp;gt;</span>
<span style="color: #339933;">#include &amp;lt;stdio.h&amp;gt;</span>
<span style="color: #339933;">#include &amp;lt;sql.h&amp;gt;</span>
<span style="color: #339933;">#include &amp;lt;sqlext.h&amp;gt;</span>
&nbsp;
<span style="color: #993333;">static</span> <span style="color: #993333;">void</span> extract_error<span style="color: #009900;">&#40;</span>
 <span style="color: #993333;">char</span> <span style="color: #339933;">*</span>fn<span style="color: #339933;">,</span>
 SQLHANDLE handle<span style="color: #339933;">,</span>
 SQLSMALLINT type<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
main<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
 SQLHENV env<span style="color: #339933;">;</span>
 SQLHDBC dbc<span style="color: #339933;">;</span>
 SQLRETURN ret<span style="color: #339933;">;</span> <span style="color: #808080; font-style: italic;">/* ODBC API return status */</span>
 SQLWCHAR outstr<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">1024</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
 SQLSMALLINT outstrlen<span style="color: #339933;">;</span>
&nbsp;
 <span style="color: #808080; font-style: italic;">/* Allocate an environment handle */</span>
 SQLAllocHandle<span style="color: #009900;">&#40;</span>SQL_HANDLE_ENV<span style="color: #339933;">,</span> SQL_NULL_HANDLE<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span>env<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #808080; font-style: italic;">/* We want ODBC 3 support */</span>
 SQLSetEnvAttr<span style="color: #009900;">&#40;</span>env<span style="color: #339933;">,</span> SQL_ATTR_ODBC_VERSION<span style="color: #339933;">,</span> <span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span> <span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span> SQL_OV_ODBC3<span style="color: #339933;">,</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #808080; font-style: italic;">/* Allocate a connection handle */</span>
 SQLAllocHandle<span style="color: #009900;">&#40;</span>SQL_HANDLE_DBC<span style="color: #339933;">,</span> env<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span>dbc<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #808080; font-style: italic;">/* Connect to the DSN mydsn */</span>
 ret <span style="color: #339933;">=</span> SQLDriverConnect<span style="color: #009900;">&#40;</span>dbc<span style="color: #339933;">,</span> NULL<span style="color: #339933;">,</span> <span style="color: #009900;">&#40;</span>SQLWCHAR <span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span>L<span style="color: #ff0000;">&quot;DSN=DSNMySQL&quot;</span><span style="color: #339933;">,</span> SQL_NTS<span style="color: #339933;">,</span> <span style="color: #009900;">&#40;</span>SQLWCHAR <span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span>outstr<span style="color: #339933;">,</span> <span style="color: #993333;">sizeof</span><span style="color: #009900;">&#40;</span>outstr<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span>outstrlen<span style="color: #339933;">,</span> SQL_DRIVER_COMPLETE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
 <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>SQL_SUCCEEDED<span style="color: #009900;">&#40;</span>ret<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
 <span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Connected<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Returned connection string was:<span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\t</span>%ls<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> outstr<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>ret <span style="color: #339933;">==</span> SQL_SUCCESS_WITH_INFO<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
 <span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Driver reported the following diagnostics<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 extract_error<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;SQLDriverConnect&quot;</span><span style="color: #339933;">,</span> dbc<span style="color: #339933;">,</span> SQL_HANDLE_DBC<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #009900;">&#125;</span>
 SQLDisconnect<span style="color: #009900;">&#40;</span>dbc<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>        <span style="color: #808080; font-style: italic;">/* disconnect from driver */</span>
 <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
 fprintf<span style="color: #009900;">&#40;</span>stderr<span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;Failed to connect<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 extract_error<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;SQLDriverConnect&quot;</span><span style="color: #339933;">,</span> dbc<span style="color: #339933;">,</span> SQL_HANDLE_DBC<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #009900;">&#125;</span>
 <span style="color: #808080; font-style: italic;">/* free up allocated handles */</span>
 SQLFreeHandle<span style="color: #009900;">&#40;</span>SQL_HANDLE_DBC<span style="color: #339933;">,</span> dbc<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 SQLFreeHandle<span style="color: #009900;">&#40;</span>SQL_HANDLE_ENV<span style="color: #339933;">,</span> env<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">static</span> <span style="color: #993333;">void</span> extract_error<span style="color: #009900;">&#40;</span>
 <span style="color: #993333;">char</span> <span style="color: #339933;">*</span>fn<span style="color: #339933;">,</span>
 SQLHANDLE handle<span style="color: #339933;">,</span>
 SQLSMALLINT type
<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Then try to compile.. (Right click on your current source code then you will see command for compiling.) I think you should found error like below:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">------ Build started: Project: CODBCMySQL, Configuration: Debug Win32 ------
Compiling...
cl : Command line error D8045 : cannot compile C file '.\CODBCMySQL.c' with the /clr option</pre></div></div>

<p>Fix it by clicking on your project in &#8220;Solution Explorer&#8221; -&gt; Property -&gt; Configuration Properties -&gt; General -&gt; Common Language Runtime Support -&gt; Select &#8220;No Common Language Runtime support&#8221; and try to compile again, sure you can compile <strong>BUT </strong>when you click &#8220;Start debugging&#8221; (F5) then you should be found below error :</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">------ Build started: Project: CODBCMySQL, Configuration: Debug Win32 ------
Linking...
CODBCMySQL.obj : error LNK2019: unresolved external symbol _SQLFreeHandle@8 referenced in function _main
CODBCMySQL.obj : error LNK2019: unresolved external symbol _SQLDisconnect@4 referenced in function _main
CODBCMySQL.obj : error LNK2019: unresolved external symbol _SQLDriverConnectW@32 referenced in function _main
CODBCMySQL.obj : error LNK2019: unresolved external symbol _SQLSetEnvAttr@16 referenced in function _main
CODBCMySQL.obj : error LNK2019: unresolved external symbol _SQLAllocHandle@12 referenced in function _main</pre></div></div>

<p>Surely, we can fix them.. clicking on your project in &#8220;Solution Explorer&#8221; -&gt; Property -&gt;  Configuration Properties -&gt; Linker -&gt; Input -&gt; Addition Dependencies, then put below libraries (Don&#8217;t ask me, i don&#8217;t know why? &#8212; I think our program needs them..)</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">kernel32.lib
user32.lib
gdi32.lib
winspool.lib
comdlg32.lib
advapi32.lib
shell32.lib
ole32.lib
oleaut32.lib
uuid.lib
odbc32.lib
odbccp32.lib</pre></div></div>

<p>OK&#8230; Try to &#8220;Start debugging&#8221; again. YES you can compile your program.</p>
<p><span style="text-decoration: underline;"><strong>THE VERY IMPORTANCE</strong></span> for connecting to MySQL database:</p>
<p>1. In part of function &#8220;SQLDriverConnect&#8221;  DON&#8217;T FORGET to put &#8220;<strong>L</strong>&#8221; before your &#8220;DSN&#8221; string.</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #009900;">&#40;</span>SQLWCHAR <span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span>L<span style="color: #ff0000;">&quot;DSN=DSNMySQL&quot;</span></pre></div></div>

<p>2. You NEED to set &#8220;default-character-set=utf8&#8243; to your MySQL database, you can set by command line. Go to command line and type :</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">C:\Program Files\MySQL\MySQL Server 5.1\bin&amp;gt;mysqladmin  --default-character-set=utf8</pre></div></div>

<p>Have fun in C programming but for me is enough &#8230; <img src='http://www.aoddy.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p></p>
<p>Special thanks :</p>
<p><a href="http://www.easysoft.com/developer/languages/c/odbc_tutorial.html">http://www.easysoft.com/developer/languages/c/odbc_tutorial.html</a></p>
<p><a href="http://dev.mysql.com/doc/refman/5.0/en/connector-odbc-configuration-dsn-windows.html">http://dev.mysql.com/doc/refman/5.0/en/connector-odbc-configuration-dsn-windows.html</a></p>
<p><a href="http://support.microsoft.com/default.aspx?scid=kb;EN-US;q294169" target="_blank">http://support.microsoft.com/default.aspx?scid=kb;EN-US;q294169</a></p>
<p><a href="http://support.unify.com/supportforum/viewtopic.php?f=20&amp;t=2497" target="_blank">http://support.unify.com/supportforum/viewtopic.php?f=20&amp;t=2497</a></p>
<p><a href="http://lists.mysql.com/myodbc/11184" target="_blank">http://lists.mysql.com/myodbc/11184</a></p>

<p><a href="http://feedads.g.doubleclick.net/~a/6RXJfBf77GMEeovaWR4WWQsOklw/0/da"><img src="http://feedads.g.doubleclick.net/~a/6RXJfBf77GMEeovaWR4WWQsOklw/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/6RXJfBf77GMEeovaWR4WWQsOklw/1/da"><img src="http://feedads.g.doubleclick.net/~a/6RXJfBf77GMEeovaWR4WWQsOklw/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/feedburner/UKqh/~4/0vFKi0Di1BA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.aoddy.com/2010/07/15/how-to-connect-mysql5-via-odbc-by-c-programming/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.aoddy.com/2010/07/15/how-to-connect-mysql5-via-odbc-by-c-programming/</feedburner:origLink></item>
		<item>
		<title>หนีไม่พ้น ODBC</title>
		<link>http://feedproxy.google.com/~r/feedburner/UKqh/~3/HikO5AekLA0/</link>
		<comments>http://www.aoddy.com/2010/07/11/cannot-run-away-from-odbc/#comments</comments>
		<pubDate>Sun, 11 Jul 2010 12:28:26 +0000</pubDate>
		<dc:creator>aoddy</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[ODBC]]></category>

		<guid isPermaLink="false">http://www.aoddy.com/?p=1169</guid>
		<description><![CDATA[ไม่ได้ยุ่งเกี่ยวกับ ODBC มาก็หลายปีแล้ว ล่าสุดจำได้ตั้งแต่ใช้ Delphi ตอนฝึกงาน หลังจากนั้นก็ทำให้ผมพบว่า ไอ้อาชีพโปรแกรมไม่เหมาะกับผมเลยเสียจริงๆ แต่จนแล้วจนรอดก็หนีไม่พ้น ยังไงๆ ก็ต้องเขียน วันนี้กับมาเจออีกครั้งในภาค C Programming ให้ทำงานติดต่อกับฐานข้อมูล MySQL ก็เลยต้องกลับมารื้อฟื้นวิทยายุทธกันนิดหน่อย เกริ่นที่ปัญหาก่อน ปัญหาคือไอ้โปรเจคฝึกงานผมเนี้ย มันเขียนด้วย C แล้วก็ติดต่อด้วยฐานข้อมูล Btrieve (ตอนนี้ถูก Move ไปเป็น Pervasive PSQL) จุดประสงค์คือ อยากย้ายจาก Btrieve ไปเป็น MySQL ก่อนจะมุทะลุ เดินแบบไร้ทิศทาง..ตั้งหลัก..แล้วมองกลับมาที่ตัวเอง &#8220;กูจักพวกมึงมั่งมั๊ยเนี้ย&#8221; ODBC (Open DataBase Connectivity) &#8230; <a href="http://www.aoddy.com/2010/07/11/cannot-run-away-from-odbc/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>ไม่ได้ยุ่งเกี่ยวกับ ODBC มาก็หลายปีแล้ว ล่าสุดจำได้ตั้งแต่ใช้ Delphi ตอนฝึกงาน หลังจากนั้นก็ทำให้ผมพบว่า ไอ้อาชีพโปรแกรมไม่เหมาะกับผมเลยเสียจริงๆ แต่จนแล้วจนรอดก็หนีไม่พ้น ยังไงๆ ก็ต้องเขียน วันนี้กับมาเจออีกครั้งในภาค C Programming ให้ทำงานติดต่อกับฐานข้อมูล MySQL ก็เลยต้องกลับมารื้อฟื้นวิทยายุทธกันนิดหน่อย</p>
<p>เกริ่นที่ปัญหาก่อน ปัญหาคือไอ้โปรเจคฝึกงานผมเนี้ย มันเขียนด้วย C แล้วก็ติดต่อด้วยฐานข้อมูล Btrieve (ตอนนี้ถูก Move ไปเป็น Pervasive PSQL) จุดประสงค์คือ อยากย้ายจาก Btrieve ไปเป็น MySQL ก่อนจะมุทะลุ เดินแบบไร้ทิศทาง..ตั้งหลัก..แล้วมองกลับมาที่ตัวเอง &#8220;กูจักพวกมึงมั่งมั๊ยเนี้ย&#8221;</p>
<p><span id="more-1169"></span></p>
<p></p>
<p>ODBC (Open DataBase Connectivity) ก็เป็น API (Application Programming Interface) ที่ช่วยให้คนเขียนโปรแกรมนั้น มีอิสระในการเขียนโปรแกรมด้วยภาษาต่างๆ, บนระบบปฏิบัติการอะไรก็ได้ และที่สุดคัญ ได้ทุกฐานข้อมูล องค์ประกอบที่สำคัญของ ODBC มีอยู่ด้วยกัน 5 ส่วนดังรูป</p>
<div class="wp-caption aligncenter" style="width: 433px"><img title="ODBC architecture" src="http://dev.mysql.com/doc/refman/5.5/en/images/myarchitecture.png" alt="" width="423" height="443" /><p class="wp-caption-text">From : www.mysql.com</p></div>
<ol>
<li><strong>Application</strong> ก็คือโปรแกรมที่เราเขียน จะด้วยภาษาอะไรก็ช่าง ข้อมูลที่เก็บยังไงไม่สน จะเก็บที่ไหนก็ไม่สนใจ สนใจแค่ว่า DSN (Data Source Name) คืออะไรเป็นพอ หน้าที่หลักๆ ก็คือ
<ul>
<li>เลือกฐานข้อมูล แล้วก็ทำการติดต่อมันซ๋ะ</li>
<li>ส่ง SQL Command</li>
<li>รับข้อมูล</li>
<li>Commit data หรือ บางครั้งจำเป็นต้อง Rollback ข้อมูลผ่าน SQL Command</li>
<li>ยกเลิกการติดต่อกับฐานข้อมูล</li>
</ul>
</li>
<li><strong>Driver Manager</strong> เขาว่าเป็น library ที่ช่วยในการติดต่อระหว่าง Application กับ Driver มีหน้าทที่หลักๆ ดังนี้
<ul>
<li>แยกแยะข้อมูลที่มีอยู่ใน DSN (คือว่าเราจะต้องเป็นคน Config เองว่า ไอ้ DSN เนี้ยมันมีอะไรบ้าง..แล้วไอ้ Driver manager มันก็เอาไอ้ที่เรากรอกไปทำงานต่อ) คือ Database driver, Database, Database host และ Authentication information (พวก Username/Password)</li>
<li>Loading /Un-loading driver เช่นใน MySQL ไอ้เจ้า Driver Manager มันก็จะสั่ง Load Connector/ODBC เพื่อให้ไปสั่งให้ ODBC API นั่นเริ่มทำการติดต่อกับ MySQL Host</li>
</ul>
</li>
<li><strong>Connector/ODBC Driver</strong> มันคือ Library (ขอย้ำว่าคือ Library) ที่ Implement function เพื่อให้ ODBC API มาเรียกใช้ พูดง่ายๆ คือ ODBC จะทำงานกับ MySQL ได้ต้องมี Driver ตัวนี้เป็นคนพูดหรือติดต่อให้</li>
<li><strong>DNS Configuration</strong> เมื่อเราต้องติดต่อกับฐานข้อมูล เราก็ต้องบอกกับ ODBC ว่าจะใช้ Driver อันไหน, Database อะไร, Username/Password ที่สามารถเข้าใช้งานฐานข้อมูลดังกล่าว</li>
<li><strong>MySQL Server</strong> แน่นอนอันนี้ขาดไม่ได้เอาไว้เก็บข้อมูล</li>
</ol>
<p>โดยไอ้ตัว ODBC Driver Manager นั้นก็ทั้งใน Windows (odbc32.dll), Mac OS x, UNIX (libodbc.so)</p>
<p></p>
<p>ที่มา : <a href="http://dev.mysql.com/doc/refman/5.5/en/connector-odbc-general-information.html" target="_blank">www.mysql.com</a>, <a href="http://en.wikipedia.org/wiki/Open_Database_Connectivity" target="_blank">wikipedia.org</a></p>

<p><a href="http://feedads.g.doubleclick.net/~a/fggQ5oc0pPF4-0xd9_bRP7MEFdg/0/da"><img src="http://feedads.g.doubleclick.net/~a/fggQ5oc0pPF4-0xd9_bRP7MEFdg/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/fggQ5oc0pPF4-0xd9_bRP7MEFdg/1/da"><img src="http://feedads.g.doubleclick.net/~a/fggQ5oc0pPF4-0xd9_bRP7MEFdg/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/feedburner/UKqh/~4/HikO5AekLA0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.aoddy.com/2010/07/11/cannot-run-away-from-odbc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.aoddy.com/2010/07/11/cannot-run-away-from-odbc/</feedburner:origLink></item>
		<item>
		<title>40 Android Business Models : Part 1</title>
		<link>http://feedproxy.google.com/~r/feedburner/UKqh/~3/15fG6hcmjpg/</link>
		<comments>http://www.aoddy.com/2010/07/04/android-business-models-part-1/#comments</comments>
		<pubDate>Sun, 04 Jul 2010 14:23:54 +0000</pubDate>
		<dc:creator>aoddy</dc:creator>
				<category><![CDATA[Android]]></category>

		<guid isPermaLink="false">http://www.aoddy.com/?p=1149</guid>
		<description><![CDATA[ผมเป็นคนหนึ่งที่หลงไหล ในความสามารถของ Android แอบไปซ้อมเขียนโปรแกรมกิ๊กก๊อกมาก็นิดหน่อย แต่ไม่เป็นโล้เป็นพายเท่าไหร่ อีกอย่างก็ยังไม่มีตังส์จะซื้อ กะว่ากลับเมืองไทยค่อยไปถอยตัวถูกๆ มาเล่นน่าจะดีกว่า ใฝ่ฝันไว้ว่าวันข้างหน้า จะกลับไปอยู่บ้านนอก แล้วก็นั่งเขียนโปรแกรมบนมือถือขาย อะไรเทือกๆ นั้น เข้าเรื่อง..พอดีวันก่อนแอบไปเห็นบทความที่เกี่ยวกับ Business Models ของ Android ก็คิดว่าน่าสนใจทีเดียว เลยถือโอกาสแปลมาเก็บไว้ดีกว่า เพราะไอ้ตัวผมก็รู้จักอยู่แค่อันเดียวก็คือ เขียนโปรแกรม แล้วก็ขายให้คนใช้ ผ่าน Android Market &#8230;.มาเริ่มเลยดีกว่า Model #1: Build the App, Sell the App to Individuals อันแรกนี้ก็จะเหมือนกับที่ผมรู้จัก แบ่งกลุ่มคน ออกเป็น &#8230; <a href="http://www.aoddy.com/2010/07/04/android-business-models-part-1/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>ผมเป็นคนหนึ่งที่หลงไหล ในความสามารถของ Android แอบไปซ้อมเขียนโปรแกรมกิ๊กก๊อกมาก็นิดหน่อย แต่ไม่เป็นโล้เป็นพายเท่าไหร่ อีกอย่างก็ยังไม่มีตังส์จะซื้อ กะว่ากลับเมืองไทยค่อยไปถอยตัวถูกๆ มาเล่นน่าจะดีกว่า ใฝ่ฝันไว้ว่าวันข้างหน้า จะกลับไปอยู่บ้านนอก แล้วก็นั่งเขียนโปรแกรมบนมือถือขาย อะไรเทือกๆ นั้น</p>
<p><span style="font-size: 13.2px;">เข้าเรื่อง..พอดีวันก่อนแอบไปเห็นบทความที่เกี่ยวกับ Business Models ของ Android ก็คิดว่าน่าสนใจทีเดียว เลยถือโอกาสแปลมาเก็บไว้ดีกว่า เพราะไอ้ตัวผมก็รู้จักอยู่แค่อันเดียวก็คือ เขียนโปรแกรม แล้วก็ขายให้คนใช้ ผ่าน Android Market &#8230;.มาเริ่มเลยดีกว่า</span></p>
<p><span style="font-size: 13.2px;"><span id="more-1149"></span><strong></strong></span></p>
<p></p>
<p><span style="font-size: 13.2px;"><strong>Model #1: Build the App, Sell the App to Individuals</strong></span></p>
<p>อันแรกนี้ก็จะเหมือนกับที่ผมรู้จัก แบ่งกลุ่มคน ออกเป็น 3 กลุ่ม คือ</p>
<ol>
<li>กลุ่มคนที่ผ่านมาเห็นโปรแกรมของเราบน Android Market ซึ่งอาจเจอเพราะอยู่ในหมวดหมู่เดียวกัน (X)</li>
<li>กลุ่มคนที่กำลังหาโปรแกรมของเรา (Y)</li>
<li>กลุ่มคนที่ซื้อโปรแกรมเราไปใช้ (Z)</li>
</ol>
<p>แน่นอนว่าเราต้องพยายามเพิ่มจำนวน ของกลุ่มคน Y &amp; Z และก็ขายไปยังในลู่แบบอื่นๆ บางครั้งตลาดอาจจะเล็ก แต่อาจจะง่ายและเหมาะสมต่อกลุ่มคนที่อยู่ในกลุ่ม Y&amp;Z</p>
<p><strong>Model #2: Make the App, Sell the App to Enterprises</strong></p>
<p>ก็คือเขียนโปรแกรมแล้วก็ขายให้บริษัทนั่นเอง บางบริษัทมีความจำเป็นที่จะต้องใช้โปรแกรมพิเศษ เฉพาะด้านมาช่วย ที่เห็นได้ชัดเลย ก็อย่างเช่น ร้าน MK พนักงานก็จะมี Mobile ไว้คอยสั่งอาหารให้ลูกค้า (บางสาขา มีเต้นโชว์ด้วย)</p>
<p><strong>Model #3: Make the App, Sell the App to Schools or Universities</strong></p>
<p>ชัดเจนครับ เขียนโปรแกรมแล้วก็ขายให้โรงเรียนหรือมหาลัย เคยเห็นเพื่อนที่เรียนสายการแพทย์ จะมีโปรแกรมบนมือถือแปลกๆ มาใช้กัน</p>
<p><strong>Model #4: Make the App, Sell the App to OEMs</strong></p>
<p>แน่นอนโปรแกรมเมอร์ไหนๆก็อยากขายโปรแกรมได้ทีละเยอะๆ ขายให้บริษัทผู้ผลิตมือถือไปเลย (Original Equipment Manufacturer) ตัวอย่างที่เห็นได้ชัดก็คือโปรแกรมฟังเพลงยอดนิยมอย่าง <a href="http://www.getsongbird.com/" target="_blank">Songbird</a> ที่ในตอนแรก  ยอมให้คนทั่วไป Download ไปใช้งานฟรีๆ (เป็นโปรแกรมสำหรับคอมพิวเตอร์)  แต่พอหลังจากนั้นก็เริ่มผลิต Software  ฟังเพลงให้บริษัทมือถือซ่ะเลยถ้าจำไม่ผิดน่าจะเป็น Samsung ก็ร่ำรวยกันไป</p>
<p><strong>Model #5: Make the App, Sell the App to Content Providers</strong></p>
<p>ในการพัฒนาโปรแกรมนั้น มันจะดีไม่ใช่น้อยถ้าเราสามารถที่จะนำฟังก์ชั่นหลักๆ มารวมกัน แล้วให้นักพัฒนาเรียกใช้ฟังก์ชั่นเหล่านั้นได้ง่ายขึ้น ถ้านึกไม่ออกให้ลองนึกถึง WordPress ที่ค่อนข้างแสดงให้เห็นได้ชัดเจนว่าเราไม่ต้องเขียนทุกอย่างเองตั้งแต่ต้น เราเขียน Core หลักของ Software มารองรับการพัฒนาต่อยอดของนักพัฒนา นั่นเอง ซึ่งถ้าเราสามารถพัฒนา Software ที่มีลักษณะคล้ายๆกับ WordPress ก็จะทำให้นักพัฒนา พัฒนา Application เหล่านั้นได้เร็วยิ่งขี้น</p>
<p>ความท้าท้ายของโมเดลธุรกิจแบบนี้ก็คือ การหาตลาดที่มีการใช้งานซ้ำ (repeatable market segment)</p>
<p><strong>Model #6: Make the App, Sell the App to Service Providers</strong></p>
<p>อันนี้จะคล้ายๆกับ โมเดลที่ 5 เพียงแต่ว่าอันนี้จะเน้นไปที่ Service provider (CAT, TOT บ้านเรา) ตัวอย่างที่แสดงให้เห็นได้ชัดก็จะเป็นโปรแกรมพวก SIP เราทำโปรแกรมให้กับบริษัทเหล่านั้น แล้วก็ให้บริษัทเหล่านั้นส่งไปให้ลูกค้า (ยอมให้ Download ฟรีๆ) หรือจะเก็บตังส์จากลูกค้าอีกรอบก็แล้วแต่ สิ่งสำคัญสำหรับโมเดลลักษณะนี้ก็คือ เราต้องคอยปรับปรุง Software อยู่เสมอตามที่ SP ต้องการ</p>
<p>ผมเคยมีโอกาส ใช้โปรแกรมพวก SIP ทั้งของ TOT และ CAT Telecom ช่วงแรกๆที่มาอยู่ฝรั่งเศสใหม่ๆ แต่สุดท้ายแล้วก็ต้องย้ายไปใช้ Skype เนื่องด้วยราคานั้นค่อนข้างแพง คิดเป็นนาที (ซื้อ 300 บาท ใช้ได้ 30 วัน) แต่ Skype ผมจ่าย 11 Euro / 3 เดือน โทรได้ unlimited ได้ทั้งเบอร์บ้านและมือถือ และที่สำคัญมีเพื่อนๆ ผมหลายคนใช้ Skype</p>
<p>จบอันแรก..เดี๋ยวพรุ่งนี้มาต่อช่วงที่ 2 ครับ</p>
<p></p>
<p>quintessential (adj)= ที่เป็นหัวใจหัวกะทิ<br />
leverage (n) = พลัง/อำนาจ<br />
lucrative (adj) = ร่ำรวย / มีกำไร</p>
<p>Original link : <a href="http://www.androidguys.com/2009/09/14/40bizmodels/" target="_blank">www.androidguys.com</a></p>

<p><a href="http://feedads.g.doubleclick.net/~a/Lw_SM56RPwWgu2XYs6-XhTYTfMI/0/da"><img src="http://feedads.g.doubleclick.net/~a/Lw_SM56RPwWgu2XYs6-XhTYTfMI/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/Lw_SM56RPwWgu2XYs6-XhTYTfMI/1/da"><img src="http://feedads.g.doubleclick.net/~a/Lw_SM56RPwWgu2XYs6-XhTYTfMI/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/feedburner/UKqh/~4/15fG6hcmjpg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.aoddy.com/2010/07/04/android-business-models-part-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.aoddy.com/2010/07/04/android-business-models-part-1/</feedburner:origLink></item>
		<item>
		<title>เมื่อฉันลืม Password</title>
		<link>http://feedproxy.google.com/~r/feedburner/UKqh/~3/MUMfzsWQNC0/</link>
		<comments>http://www.aoddy.com/2010/06/25/when-i-forget-my-password/#comments</comments>
		<pubDate>Fri, 25 Jun 2010 14:26:12 +0000</pubDate>
		<dc:creator>aoddy</dc:creator>
				<category><![CDATA[ทั่วไป]]></category>

		<guid isPermaLink="false">http://www.aoddy.com/?p=1142</guid>
		<description><![CDATA[เรื่องมีอยู่ว่า ต้องเข้ามา Upgrade WordPress 2.9 ไปเป็น 3.0 แต่ด้วยความที่นานมากแล้วที่ไม่ได้เข้ามาเป็น Admin ก็เลยลืม Password แต่โชคยังดีที่ผมให้คุณ &#8220;จิ้งจอกอัคคี&#8221; จำรหัสผ่าน พอผมใส่ Username ไอ้รหัสบ้านั้นก็แปลงร่างเป็นจุด โผล่ออกมาท้าทาย &#8220;อ่ะ..แน่จริงมึง นึกให้ออก..มึงนึกให้ออก&#8221; ชื่อสาวทุกคนผมก็ใส่หมดแล้ว.. มันก็ยังไม่ออก(ปกติผมจะเอาชื่อสาว..เป็นรหัสผ่าน บางครั้งมีการบวก &#8220;ความนัย&#8221; ไปอีกเล็กน้อยเพื่อเพิ่มความ Security) จดสุดท้ายต้องงัดใช้กระบี่เพลงสุดท้าย &#8220;show hidden password java script&#8221; ใส่ Google เสียงดัง &#8220;ฟุบส์&#8221; โป๊ะเช่ะ..จะเหลือเหรอ ก็ง่ายๆ เลยครับเอา JavaScript &#8230; <a href="http://www.aoddy.com/2010/06/25/when-i-forget-my-password/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>เรื่องมีอยู่ว่า ต้องเข้ามา Upgrade WordPress 2.9 ไปเป็น 3.0 แต่ด้วยความที่นานมากแล้วที่ไม่ได้เข้ามาเป็น Admin ก็เลยลืม Password แต่โชคยังดีที่ผมให้คุณ &#8220;<a href="http://www.mozilla.com/en-US/firefox/personal.html" target="_blank">จิ้งจอกอัคคี</a>&#8221; จำรหัสผ่าน พอผมใส่ Username ไอ้รหัสบ้านั้นก็แปลงร่างเป็นจุด โผล่ออกมาท้าทาย &#8220;อ่ะ..แน่จริงมึง นึกให้ออก..มึงนึกให้ออก&#8221;</p>
<p>ชื่อสาวทุกคนผมก็ใส่หมดแล้ว.. มันก็ยังไม่ออก(ปกติผมจะเอาชื่อสาว..เป็นรหัสผ่าน บางครั้งมีการบวก &#8220;ความนัย&#8221; ไปอีกเล็กน้อยเพื่อเพิ่มความ Security) จดสุดท้ายต้องงัดใช้กระบี่เพลงสุดท้าย &#8220;show hidden password java script&#8221; ใส่ Google เสียงดัง &#8220;ฟุบส์&#8221; โป๊ะเช่ะ..จะเหลือเหรอ</p>
<p><span id="more-1142"></span>ก็ง่ายๆ เลยครับเอา JavaScript ด้านล่างใส่ลงไปใน URL ไอ้หน้าที่เราต้องการจะดูนั่นแหละ..เราก็จะเห็นทันที</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">javascript:(function(){var s,F,j,f,i; s = &quot;&quot;; F = document.forms; for(j=0; j&amp;lt;F.length; ++j) { f = F[j]; for (i=0; i&amp;lt;f.length; ++i) { if (f[i].type.toLowerCase() == &quot;password&quot;) s += f[i].value + &quot;\n&quot;; } } if (s) alert(&quot;Passwords in forms on this page:\n\n&quot; + s); else alert(&quot;There are no passwords in forms on this page.&quot;);})();</pre></div></div>

<p>ไอ้รหัสผ่าน นั้นก็จะโชว์มาให้เราเห็นทันที</p>
<p>ทำให้รู้ว่า&#8230;อย่าให้ Browser จำรหัสผ่านดีที่สุด</p>
<p>Original link : <a href="http://www.raymond.cc/blog/archives/2007/07/13/easily-show-the-contents-of-password-fields/" target="_blank">www.raymond.cc</a></p>

<p><a href="http://feedads.g.doubleclick.net/~a/LhK_5wJTsdPOoSLC1lLtEc6xwUo/0/da"><img src="http://feedads.g.doubleclick.net/~a/LhK_5wJTsdPOoSLC1lLtEc6xwUo/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/LhK_5wJTsdPOoSLC1lLtEc6xwUo/1/da"><img src="http://feedads.g.doubleclick.net/~a/LhK_5wJTsdPOoSLC1lLtEc6xwUo/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/feedburner/UKqh/~4/MUMfzsWQNC0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.aoddy.com/2010/06/25/when-i-forget-my-password/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.aoddy.com/2010/06/25/when-i-forget-my-password/</feedburner:origLink></item>
		<item>
		<title>ชีวิตเด็กนอก ตอน ฝึกงาน</title>
		<link>http://feedproxy.google.com/~r/feedburner/UKqh/~3/hN48jWE90cI/</link>
		<comments>http://www.aoddy.com/2010/06/08/internship/#comments</comments>
		<pubDate>Tue, 08 Jun 2010 10:08:54 +0000</pubDate>
		<dc:creator>aoddy</dc:creator>
				<category><![CDATA[France]]></category>
		<category><![CDATA[Travel]]></category>
		<category><![CDATA[ทั่วไป]]></category>
		<category><![CDATA[Poitiers]]></category>

		<guid isPermaLink="false">http://www.aoddy.com/?p=1103</guid>
		<description><![CDATA[ฝึกงาน (internship) คนฝรั่งเศสเรียกว่า stage (ซะ-ตาส) คนไทยบางคนออกเสียงว่า intern &#8211; shit !!! เพราะว่าหายากมาก ผมเริ่มหาที่ฝึกงานตั้งแต่เดือนตุลา (2009) กว่าจะได้ก็ปาไปโน้นเลย ต้นๆ พฤษภา (2010) ปัญหาใหญ่ก็คือ เราพูดภาษาฝรั่งเศสไม่ได้ ความยากมันจากยากขึ้นไปอีกหลายเท่า เด็กฝึกงานประเทศนี้ ก่อนเข้าไปก็ต้องมีสัมภาษณ์กันเป็นเรื่องเป็นราว เหมือนกับสัมภาษณ์หางานเป๊ะ มีงานให้ทำแน่นอน ส่วนตัวก็ได้สัมภาษณ์กับบริษัทฝรั่งอยู่ประมาณ 3 บริษัท ตอนสัมภาษณ์ก็บอกเรา โอเคอย่างนั้นอย่างนี้ มีประสบการณ์เนี้ยเป็นจุดเด่นของคนอื่นเลยนะ ถุย..ชีวิต ตอบเมลมา คุณมีปัญหาเรื่องภาษานะ, government ของ country คุณตอนนี้ก็กำลังมีปัญหานะ เราไม่สามารถรับคุณได้ (ช่วงนั้นแน่นอน..เสื้อแดง..ประท้วง).. ครับผม &#8230; <a href="http://www.aoddy.com/2010/06/08/internship/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>ฝึกงาน (internship) คนฝรั่งเศสเรียกว่า stage (ซะ-ตาส) คนไทยบางคนออกเสียงว่า intern &#8211; shit !!! เพราะว่าหายากมาก ผมเริ่มหาที่ฝึกงานตั้งแต่เดือนตุลา (2009) กว่าจะได้ก็ปาไปโน้นเลย ต้นๆ พฤษภา (2010) ปัญหาใหญ่ก็คือ เราพูดภาษาฝรั่งเศสไม่ได้ ความยากมันจากยากขึ้นไปอีกหลายเท่า เด็กฝึกงานประเทศนี้ ก่อนเข้าไปก็ต้องมีสัมภาษณ์กันเป็นเรื่องเป็นราว เหมือนกับสัมภาษณ์หางานเป๊ะ มีงานให้ทำแน่นอน ส่วนตัวก็ได้สัมภาษณ์กับบริษัทฝรั่งอยู่ประมาณ 3 บริษัท ตอนสัมภาษณ์ก็บอกเรา โอเคอย่างนั้นอย่างนี้ มีประสบการณ์เนี้ยเป็นจุดเด่นของคนอื่นเลยนะ ถุย..ชีวิต ตอบเมลมา คุณมีปัญหาเรื่องภาษานะ, government ของ country คุณตอนนี้ก็กำลังมีปัญหานะ เราไม่สามารถรับคุณได้ (ช่วงนั้นแน่นอน..เสื้อแดง..ประท้วง).. ครับผม .. ผมเข้าใจ .. ครับผม .. (ออกเสียงเหมือนพี่ยม..เรื่องเป็นต่อ)</p>
<p><span id="more-1103"></span></p>
<p></p>
<p>Anyway finally, I got it !!! สุดท้ายก็ได้มา .. ครับผม .. กว่าจะได้ก็เล่นลุ้นกันจนเยี่ยวเหนียว..ตัวเลือกไม่มีครับ ยังไงก็ต้องเอา..เดี๋ยวไม่จบ ที่ที่ผมฝึกงานก็มีชื่อว่า Laboratoire d&#8217;Informatique Scientifique et Industrielle (LISI : <a href="http://www.lisi.ensma.fr/" target="_blank">www.lisi.ensma.fr/</a> ) เป็น Lab ของมหาวิทยาลัย Ecole Nationale Supérieure de Mécaniqueet d&#8217;Aérotechnique (ENSMA : <a href="http://www.ensma.fr/" target="_blank">www.ensma.fr</a>) พอได้ที่ฝึกงาน..ผมก็เลยจำเป็นต้องย้ายมาอยู่อีกเมือง เมืองนี้ชื่อ Poitiers (โป ติ เย่) เป็นเมืองที่ขึ้นมาทางเหนือจากเมืองตูลุส ที่ผมเคยอยู่มาประมาณ 400 km (อารมณ์กรุงเทพ &#8211; พิษโลก)</p>
<p><a title="googlemap" href="http://maps.google.com/maps?f=d&amp;source=embed&amp;saddr=Toulouse,+France&amp;daddr=Poitiers,+France&amp;hl=en&amp;geocode=FYtZmQIdhwQWACn_UnXsb7uuEjEwEEEvnPYGBA%3BFWrcxgIdeDoFACmrs55Dcr79RzGTkODFGSPelw&amp;mra=ls&amp;sll=45.920587,2.010498&amp;sspn=3.798202,9.876709&amp;ie=UTF8&amp;t=h&amp;ll=45.274886,0.450439&amp;spn=3.842132,9.876709&amp;z=7" target="_blank">Maps</a></p>
<p>หัวข้อที่มาฝึกก็หนีไม่พ้นเขียนโปรแกรม ทาง Lab เค้าอยากให้ Upgrade software ซึ่งทำไว้นานแล้วตอนนั้น dev ด้วย c แต่เขาอยากได้ใหม่เป็น Visual C++ .Net platform บนฐานข้อมูล SQL Server (ยี้&#8230; Window$..อ่อน..) อ่อน แล้วทำไมมั๊ย? ทำสิครับเลือกได้ที่ไหน.. &#8220;คนเรามันต้องเรียนรู้ที่จะอยู่กับการเปลี่ยนแปลง&#8221;  Software ที่ต้องทำก็ประมาณว่า มีอุปกรณ์พวก GPS ติดไว้กับพวก รถ (รถยนต์ รถตู้) แล้ว Software ก็เอาข้อมูลเหล่านั้นมาดูว่าวิ่งไปไหน, หา Shortest path รถต้นทุนอะไรเทือกๆ นั้น .. Software แนวนี้ปัจจุบันมีค่อยข้างเยอะ ..แต่อย่าลืมครับตัวนี้ตั้งแต่ปี 1992</p>
<p>โปติเย่ เป็นเมืองเล็กๆ ครับ..ไม่มี Metro เหมือนตูลุส (เมืองใหญ่..ต้องมี Metro &#8212; คล้ายๆ อำเภอไหนมี Seven อำเภอนั้นเจริญ)ที่เที่ยวตอนนี้ ที่ผมเล็งๆว่ายังไงก็ต้องไปคือ <a title="Futuroscope" href="http://www.futuroscope.com/" target="_blank">Futuroscope</a> ก็อยู่ใกล้ๆ กับที่ผมพักเลย เดี๋ยวไปเที่ยวข้างในแล้วจะแอบถ่ายรูปมาฝากเดินจากหอที่ผมพักไปได้เลย 10 นาทีก็ถึงละ ที่อื่นๆผมก็ลองถามเพื่อนที่มาฝึกงานด้วยกันก็บอกว่าไม่มีแล้วนะ.คงมีอันนี้ที่เดียว</p>
<p>ส่วนตัวผมโชคดีหน่อย เพราะที่พักใกล้กับที่ฝึกงานเดินไป 5 นาทีก็ถึง ใกล้ๆอีกเช่นกันก็มี Auchan (โอ ชอง) ติดกับ Futuroscope เลย ก็เป็นห้างสรรพสินค้าคล้ายๆ BigC, Carrefour บ้านเรา</p>
<p>เล่ามาเยอะละ เดี๋ยวพาไปดูรอบๆหอ ครับว่าบรรยากาศเป็นไงมั่ง เริ่มที่ทางเดินในหน้าห้อง..หน้ากลัวนิดหน่อย</p>
<table style="width: auto;">
<tbody>
<tr>
<td><a href="http://picasaweb.google.com/lh/photo/Lzno_fM5bEbLwtq9ECpdBw?feat=embedwebsite"><img src="http://lh4.ggpht.com/_spyPo--tSK4/TBP_833tHhI/AAAAAAAATY0/FHo6f2Da_gM/s400/IMG_9794.JPG" alt="" /></a></td>
</tr>
<tr>
<td style="font-family: arial,sans-serif; font-size: 11px; text-align: right;">From <a href="http://picasaweb.google.com/somsak.ke/ENSMAPoitiers?feat=embedwebsite">ENSMA@Poitiers</a></td>
</tr>
</tbody>
</table>
<p>ด้านหน้าหอ..ถัดไปอีกนิดก็จะมีเหมือนเป็นบึงสระน้ำ ก็มักจะมีคนมากางเต๊นตกปลา</p>
<table style="width: auto;">
<tbody>
<tr>
<td><a href="http://picasaweb.google.com/lh/photo/lN-4glqvQEGU863O7rFoNw?feat=embedwebsite"><img src="http://lh4.ggpht.com/_spyPo--tSK4/TBP_9QTDhHI/AAAAAAAATY4/yTJPwNfznfw/s400/IMG_9798.JPG" alt="" /></a></td>
</tr>
<tr>
<td style="font-family: arial,sans-serif; font-size: 11px; text-align: right;">From <a href="http://picasaweb.google.com/somsak.ke/ENSMAPoitiers?feat=embedwebsite">ENSMA@Poitiers</a></td>
</tr>
</tbody>
</table>
<p>ใต้หอก็จะมีบาร์เล็กๆ คนจะมา Dance กันทุกคืนวันพุธ..กว่าจะเลิกก็โน้นเลยตี 1 ผมก็แอบลงมาดูละ ไม่เถื่อนเท่าไหร่ เต้นกันหนุกๆ</p>
<table style="width: auto;">
<tbody>
<tr>
<td><a href="http://picasaweb.google.com/lh/photo/4I3fCMBFG5-sd8ieEmxfEg?feat=embedwebsite"><img src="http://lh4.ggpht.com/_spyPo--tSK4/TBP_-JPQPkI/AAAAAAAATY8/-GI7FmcF9kA/s400/IMG_9799.JPG" alt="" /></a></td>
</tr>
<tr>
<td style="font-family: arial,sans-serif; font-size: 11px; text-align: right;">From <a href="http://picasaweb.google.com/somsak.ke/ENSMAPoitiers?feat=embedwebsite">ENSMA@Poitiers</a></td>
</tr>
</tbody>
</table>
<p>หน้าหอครับ</p>
<table style="width: auto;">
<tbody>
<tr>
<td><a href="http://picasaweb.google.com/lh/photo/wJMsUUzqc_mep0eZLUA3ag?feat=embedwebsite"><img src="http://lh6.ggpht.com/_spyPo--tSK4/TBQAHJs9lNI/AAAAAAAATZw/leNTYVY59DU/s400/IMG_9865.JPG" alt="" /></a></td>
</tr>
<tr>
<td style="font-family: arial,sans-serif; font-size: 11px; text-align: right;">From <a href="http://picasaweb.google.com/somsak.ke/ENSMAPoitiers?feat=embedwebsite">ENSMA@Poitiers</a></td>
</tr>
</tbody>
</table>
<p>อย่างที่บอกไปว่า..จะมีคนมากางเต๊นนอน ตกปลาตอนกลางคืน บรรยากาศก็จะดีมากครับ</p>
<table style="width: auto;">
<tbody>
<tr>
<td><a href="http://picasaweb.google.com/lh/photo/zcjo34LKYt_h4Ah0C0yr9Q?feat=embedwebsite"><img src="http://lh4.ggpht.com/_spyPo--tSK4/TBP__qt2McI/AAAAAAAATZA/JmMQy12XZ_4/s400/IMG_9802.JPG" alt="" /></a></td>
</tr>
<tr>
<td style="font-family: arial,sans-serif; font-size: 11px; text-align: right;">From <a href="http://picasaweb.google.com/somsak.ke/ENSMAPoitiers?feat=embedwebsite">ENSMA@Poitiers</a></td>
</tr>
</tbody>
</table>
<table style="width: auto;">
<tbody>
<tr>
<td><a href="http://picasaweb.google.com/lh/photo/TYNHacVFxcGktY0CoLPm3g?feat=embedwebsite"><img src="http://lh5.ggpht.com/_spyPo--tSK4/TBQAGfYv0tI/AAAAAAAATZs/XmB_hRS2wHc/s400/IMG_9860.JPG" alt="" /></a></td>
</tr>
<tr>
<td style="font-family: arial,sans-serif; font-size: 11px; text-align: right;">From <a href="http://picasaweb.google.com/somsak.ke/ENSMAPoitiers?feat=embedwebsite">ENSMA@Poitiers</a></td>
</tr>
</tbody>
</table>
<p>ตรงนี้ก็เดินผ่านทุกวัน เข้าไปที่ Lab</p>
<table style="width: auto;">
<tbody>
<tr>
<td><a href="http://picasaweb.google.com/lh/photo/WCG19pHiZx-CtcYUxhpc6w?feat=embedwebsite"><img src="http://lh5.ggpht.com/_spyPo--tSK4/TBQAAckfmvI/AAAAAAAATZI/SgFXfk4kzws/s400/IMG_9812.JPG" alt="" /></a></td>
</tr>
<tr>
<td style="font-family: arial,sans-serif; font-size: 11px; text-align: right;">From <a href="http://picasaweb.google.com/somsak.ke/ENSMAPoitiers?feat=embedwebsite">ENSMA@Poitiers</a></td>
</tr>
</tbody>
</table>
<p>ตึกที่ทำงาน</p>
<table style="width: auto;">
<tbody>
<tr>
<td><a href="http://picasaweb.google.com/lh/photo/mvkp2ady5eoQzFTAjYhW1A?feat=embedwebsite"><img src="http://lh5.ggpht.com/_spyPo--tSK4/TBQABAQUhyI/AAAAAAAATZM/M54Y60v9t6Y/s400/IMG_9815.JPG" alt="" /></a></td>
</tr>
<tr>
<td style="font-family: arial,sans-serif; font-size: 11px; text-align: right;">From <a href="http://picasaweb.google.com/somsak.ke/ENSMAPoitiers?feat=embedwebsite">ENSMA@Poitiers</a></td>
</tr>
</tbody>
</table>
<p>อ้อ เห็นโค้งๆ แค่นั้นจริงๆแล้วใหญ่มากนะครับ..ไม่เชื่อเดี๋ยวลองดูจาก Google Earth ประเทศนีชอบทำตึกแปลกๆ</p>
<p><a title="googlemap" href="http://maps.google.com/maps?f=q&amp;source=s_q&amp;hl=en&amp;geocode=&amp;q=ENSMA,+Teleport+2+-+1,+avenue+Clement+Ader,+BP+40109,+86360+FUTUROSCOPE+CHASSENEUIL+Cedex,+France&amp;sll=46.582256,0.342722&amp;sspn=0.006961,0.01929&amp;ie=UTF8&amp;hq=ENSMA,+Teleport+2+-+1,+avenue+Clement+Ader,+BP+40109,+86360+FUTUROSCOPE+CHASSENEUIL+Cedex,+France&amp;hnear=&amp;ll=46.661278,0.360467&amp;spn=0.00366,0.009645&amp;t=h&amp;z=17" target="_blank">ENSMA</a></p>
<p>ข้างๆตึกโค้งๆ เมื่อกี้ก็จะมีแอ่งน้ำ ก็จะมีพวกกระต่าย มาเดินเล่นเต็มไปหมด</p>
<table style="width: auto;">
<tbody>
<tr>
<td><a href="http://picasaweb.google.com/lh/photo/pUJdbbZ7DnEEZTBZoLkm0Q?feat=embedwebsite"><img src="http://lh3.ggpht.com/_spyPo--tSK4/TBQABxKPxtI/AAAAAAAATZQ/0_mc8t0Ftl0/s400/IMG_9824.JPG" alt="" /></a></td>
</tr>
<tr>
<td style="font-family: arial,sans-serif; font-size: 11px; text-align: right;">From <a href="http://picasaweb.google.com/somsak.ke/ENSMAPoitiers?feat=embedwebsite">ENSMA@Poitiers</a></td>
</tr>
</tbody>
</table>
<p>เห็น Futuroscope อยู่ใกล้ ไอ้ตึกแปลกๆ นั่นแหละครับ เป็นพื้นที่ของ Futuroscope ทั้งหมด</p>
<table style="width: auto;">
<tbody>
<tr>
<td><a href="http://picasaweb.google.com/lh/photo/H4UdSoodKEuII-WEvFPp5g?feat=embedwebsite"><img src="http://lh3.ggpht.com/_spyPo--tSK4/TBQACYExRaI/AAAAAAAATZU/Hm6xz7GBt70/s400/IMG_9831.JPG" alt="" /></a></td>
</tr>
<tr>
<td style="font-family: arial,sans-serif; font-size: 11px; text-align: right;">From <a href="http://picasaweb.google.com/somsak.ke/ENSMAPoitiers?feat=embedwebsite">ENSMA@Poitiers</a></td>
</tr>
</tbody>
</table>
<p>บึงแอ่งน้ำจากมุมสูง</p>
<table style="width: auto;">
<tbody>
<tr>
<td><a href="http://picasaweb.google.com/lh/photo/JZ4fCfvatsOpicmHRG5Ojg?feat=embedwebsite"><img src="http://lh3.ggpht.com/_spyPo--tSK4/TBQAHWx5L-I/AAAAAAAATZ0/5DmwqHV29I4/s400/IMG_9868.JPG" alt="" /></a></td>
</tr>
<tr>
<td style="font-family: arial,sans-serif; font-size: 11px; text-align: right;">From <a href="http://picasaweb.google.com/somsak.ke/ENSMAPoitiers?feat=embedwebsite">ENSMA@Poitiers</a></td>
</tr>
</tbody>
</table>
<p></p>
<p>ดูรูปที่เหลือครับ</p>
<div id="kpg-album-description">
<div id='kpg-title'>ENSMA@Poitiers</div>
<div id='kpg-summary'>Just took some pictures around my dormitory..</div>
<div id="kpg-nbPhotos">18 photos</div>
<div id='kpg-slideshow'><a href='http://picasaweb.google.com/s/c/bin/slideshow.swf?host=picasaweb.google.com&#038;RGB=0x000000&#038;feed=http%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2Fsomsak.ke%2Falbumid%2F5482006587407573889%3Falt%3Drss'>Slideshow</a></div>
</div>
<table cellpadding="0" cellspacing="0" border="0" width="100%" id="kpg-pictures">
<tr>
<td width='33%'><a href='http://lh4.ggpht.com/_spyPo--tSK4/TBP_833tHhI/AAAAAAAATY0/FHo6f2Da_gM/s800/IMG_9794.JPG' rel='lightbox[kpicasa_gallery]'><img src='http://lh4.ggpht.com/_spyPo--tSK4/TBP_833tHhI/AAAAAAAATY0/FHo6f2Da_gM/s144/IMG_9794.JPG' height='144' width='97' alt='' class='kpg-thumb' /></a></td>
<td width='33%'><a href='http://lh4.ggpht.com/_spyPo--tSK4/TBP_9QTDhHI/AAAAAAAATY4/yTJPwNfznfw/s800/IMG_9798.JPG' rel='lightbox[kpicasa_gallery]'><img src='http://lh4.ggpht.com/_spyPo--tSK4/TBP_9QTDhHI/AAAAAAAATY4/yTJPwNfznfw/s144/IMG_9798.JPG' height='144' width='97' alt='' class='kpg-thumb' /></a></td>
<td width='34%'><a href='http://lh4.ggpht.com/_spyPo--tSK4/TBP_-JPQPkI/AAAAAAAATY8/-GI7FmcF9kA/s800/IMG_9799.JPG' rel='lightbox[kpicasa_gallery]'><img src='http://lh4.ggpht.com/_spyPo--tSK4/TBP_-JPQPkI/AAAAAAAATY8/-GI7FmcF9kA/s144/IMG_9799.JPG' height='144' width='97' alt='' class='kpg-thumb' /></a></td>
</tr>
<tr>
<td width='33%'><a href='http://lh4.ggpht.com/_spyPo--tSK4/TBP__qt2McI/AAAAAAAATZA/JmMQy12XZ_4/s800/IMG_9802.JPG' rel='lightbox[kpicasa_gallery]'><img src='http://lh4.ggpht.com/_spyPo--tSK4/TBP__qt2McI/AAAAAAAATZA/JmMQy12XZ_4/s144/IMG_9802.JPG' height='97' width='144' alt='' class='kpg-thumb' /></a></td>
<td width='33%'><a href='http://lh5.ggpht.com/_spyPo--tSK4/TBQAACqwXiI/AAAAAAAATZE/Q_4b92KX83k/s800/IMG_9809.JPG' rel='lightbox[kpicasa_gallery]'><img src='http://lh5.ggpht.com/_spyPo--tSK4/TBQAACqwXiI/AAAAAAAATZE/Q_4b92KX83k/s144/IMG_9809.JPG' height='97' width='144' alt='' class='kpg-thumb' /></a></td>
<td width='34%'><a href='http://lh5.ggpht.com/_spyPo--tSK4/TBQAAckfmvI/AAAAAAAATZI/SgFXfk4kzws/s800/IMG_9812.JPG' rel='lightbox[kpicasa_gallery]'><img src='http://lh5.ggpht.com/_spyPo--tSK4/TBQAAckfmvI/AAAAAAAATZI/SgFXfk4kzws/s144/IMG_9812.JPG' height='144' width='97' alt='' class='kpg-thumb' /></a></td>
</tr>
<tr>
<td width='33%'><a href='http://lh5.ggpht.com/_spyPo--tSK4/TBQABAQUhyI/AAAAAAAATZM/M54Y60v9t6Y/s800/IMG_9815.JPG' rel='lightbox[kpicasa_gallery]'><img src='http://lh5.ggpht.com/_spyPo--tSK4/TBQABAQUhyI/AAAAAAAATZM/M54Y60v9t6Y/s144/IMG_9815.JPG' height='97' width='144' alt='' class='kpg-thumb' /></a></td>
<td width='33%'><a href='http://lh3.ggpht.com/_spyPo--tSK4/TBQABxKPxtI/AAAAAAAATZQ/0_mc8t0Ftl0/s800/IMG_9824.JPG' rel='lightbox[kpicasa_gallery]'><img src='http://lh3.ggpht.com/_spyPo--tSK4/TBQABxKPxtI/AAAAAAAATZQ/0_mc8t0Ftl0/s144/IMG_9824.JPG' height='97' width='144' alt='' class='kpg-thumb' /></a></td>
<td width='34%'><a href='http://lh3.ggpht.com/_spyPo--tSK4/TBQACYExRaI/AAAAAAAATZU/Hm6xz7GBt70/s800/IMG_9831.JPG' rel='lightbox[kpicasa_gallery]'><img src='http://lh3.ggpht.com/_spyPo--tSK4/TBQACYExRaI/AAAAAAAATZU/Hm6xz7GBt70/s144/IMG_9831.JPG' height='97' width='144' alt='' class='kpg-thumb' /></a></td>
</tr>
<tr>
<td width='33%'><a href='http://lh3.ggpht.com/_spyPo--tSK4/TBQADAXyfQI/AAAAAAAATZY/buAF_gLWJ7g/s800/IMG_9840.JPG' rel='lightbox[kpicasa_gallery]'><img src='http://lh3.ggpht.com/_spyPo--tSK4/TBQADAXyfQI/AAAAAAAATZY/buAF_gLWJ7g/s144/IMG_9840.JPG' height='97' width='144' alt='' class='kpg-thumb' /></a></td>
<td width='33%'><a href='http://lh4.ggpht.com/_spyPo--tSK4/TBQADUnq60I/AAAAAAAATZc/ugAcVXBqs90/s800/IMG_9843.JPG' rel='lightbox[kpicasa_gallery]'><img src='http://lh4.ggpht.com/_spyPo--tSK4/TBQADUnq60I/AAAAAAAATZc/ugAcVXBqs90/s144/IMG_9843.JPG' height='97' width='144' alt='' class='kpg-thumb' /></a></td>
<td width='34%'><a href='http://lh6.ggpht.com/_spyPo--tSK4/TBQAEU_c-2I/AAAAAAAATZg/ikSYkWE009I/s800/IMG_9852.JPG' rel='lightbox[kpicasa_gallery]'><img src='http://lh6.ggpht.com/_spyPo--tSK4/TBQAEU_c-2I/AAAAAAAATZg/ikSYkWE009I/s144/IMG_9852.JPG' height='97' width='144' alt='' class='kpg-thumb' /></a></td>
</tr>
<tr>
<td width='33%'><a href='http://lh6.ggpht.com/_spyPo--tSK4/TBQAEn-7tMI/AAAAAAAATZk/0OdcJCtrPi4/s800/IMG_9854.JPG' rel='lightbox[kpicasa_gallery]'><img src='http://lh6.ggpht.com/_spyPo--tSK4/TBQAEn-7tMI/AAAAAAAATZk/0OdcJCtrPi4/s144/IMG_9854.JPG' height='144' width='97' alt='' class='kpg-thumb' /></a></td>
<td width='33%'><a href='http://lh4.ggpht.com/_spyPo--tSK4/TBQAFOvTUCI/AAAAAAAATZo/g_pUXCnV81I/s800/IMG_9856.JPG' rel='lightbox[kpicasa_gallery]'><img src='http://lh4.ggpht.com/_spyPo--tSK4/TBQAFOvTUCI/AAAAAAAATZo/g_pUXCnV81I/s144/IMG_9856.JPG' height='97' width='144' alt='' class='kpg-thumb' /></a></td>
<td width='34%'><a href='http://lh5.ggpht.com/_spyPo--tSK4/TBQAGfYv0tI/AAAAAAAATZs/XmB_hRS2wHc/s800/IMG_9860.JPG' rel='lightbox[kpicasa_gallery]'><img src='http://lh5.ggpht.com/_spyPo--tSK4/TBQAGfYv0tI/AAAAAAAATZs/XmB_hRS2wHc/s144/IMG_9860.JPG' height='97' width='144' alt='' class='kpg-thumb' /></a></td>
</tr>
<tr>
<td width='33%'><a href='http://lh6.ggpht.com/_spyPo--tSK4/TBQAHJs9lNI/AAAAAAAATZw/leNTYVY59DU/s800/IMG_9865.JPG' rel='lightbox[kpicasa_gallery]'><img src='http://lh6.ggpht.com/_spyPo--tSK4/TBQAHJs9lNI/AAAAAAAATZw/leNTYVY59DU/s144/IMG_9865.JPG' height='97' width='144' alt='' class='kpg-thumb' /></a></td>
<td width='33%'><a href='http://lh3.ggpht.com/_spyPo--tSK4/TBQAHWx5L-I/AAAAAAAATZ0/5DmwqHV29I4/s800/IMG_9868.JPG' rel='lightbox[kpicasa_gallery]'><img src='http://lh3.ggpht.com/_spyPo--tSK4/TBQAHWx5L-I/AAAAAAAATZ0/5DmwqHV29I4/s144/IMG_9868.JPG' height='97' width='144' alt='' class='kpg-thumb' /></a></td>
<td width='34%'><a href='http://lh6.ggpht.com/_spyPo--tSK4/TBQAHv97ijI/AAAAAAAATZ4/MTEJOYX-4_4/s800/IMG_9872.JPG' rel='lightbox[kpicasa_gallery]'><img src='http://lh6.ggpht.com/_spyPo--tSK4/TBQAHv97ijI/AAAAAAAATZ4/MTEJOYX-4_4/s144/IMG_9872.JPG' height='97' width='144' alt='' class='kpg-thumb' /></a></td>
</tr>
</table>
<p><br style="clear: both;" /></p>

<p><a href="http://feedads.g.doubleclick.net/~a/YXfJ9txet9YBux3_ZC1CGt2LgjU/0/da"><img src="http://feedads.g.doubleclick.net/~a/YXfJ9txet9YBux3_ZC1CGt2LgjU/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/YXfJ9txet9YBux3_ZC1CGt2LgjU/1/da"><img src="http://feedads.g.doubleclick.net/~a/YXfJ9txet9YBux3_ZC1CGt2LgjU/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/feedburner/UKqh/~4/hN48jWE90cI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.aoddy.com/2010/06/08/internship/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.aoddy.com/2010/06/08/internship/</feedburner:origLink></item>
		<item>
		<title>Multi-criteria decision analysis</title>
		<link>http://feedproxy.google.com/~r/feedburner/UKqh/~3/r0F9MQ3BNDQ/</link>
		<comments>http://www.aoddy.com/2010/05/29/multi-criteria-decision-analysis/#comments</comments>
		<pubDate>Fri, 28 May 2010 22:02:07 +0000</pubDate>
		<dc:creator>aoddy</dc:creator>
				<category><![CDATA[MCDA]]></category>

		<guid isPermaLink="false">http://www.aoddy.com/?p=1095</guid>
		<description><![CDATA[ผมรู้จัก Multi Criteria Decision Analysis(MCDA) ก็ตอนที่เรียน Master ที่ SUPAERO เมื่อประมาณปลายปีที่แล้ว (2009) ผ่านมาหลายเดือน ก็เกือบลืมๆ เรื่องราวนั้นไปแล้ว วันนี้ก็ถือโอกาสกลับมานึกถึงมันอีกซักครั้ง จริงๆแล้วที่กลับมาสนใจอีกครั้ง ก็เนื่องมาจากว่า มีน้องคนหนึ่งมาถามผมว่า &#8220;ตอนนี้มีใคร ใช้ iphone หรือ blackberry บ้าง พอดีว่าจำเป็นที่จะต้องซื้อสิ้นเดือนนี้&#8221; ส่วนตัวผมเฉยๆ นะ ระหว่างไอ้ 2 เจ้านี้..แต่ถ้าต้องเลือกจริงๆ คงไม่แคล้ว iphone จะได้เอามาเป็นเพื่อนกับ น้อง Maccy ในห้อง นี่ก็ยังไม่ได้ถามน้องมันว่าสรุปแล้วเลือกอันไหน..แต่คงไม่แคล้ว BB ประเด็นไม่ได้บอกว่าผมจะแนะนำให้ซื้อมือถืออะไร แต่จะดีกว่ามั๊ยถ้าเราจะเลือกซื้ออะไรซักอย่าง &#8230; <a href="http://www.aoddy.com/2010/05/29/multi-criteria-decision-analysis/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><img class="  alignleft" src="http://www.natchers.com/wp-content/uploads/2008/07/gear4-blackbox-micro.jpg" alt="" width="176" height="187" /></p>
<p>ผมรู้จัก Multi Criteria Decision Analysis(MCDA) ก็ตอนที่เรียน Master ที่ SUPAERO เมื่อประมาณปลายปีที่แล้ว (2009) ผ่านมาหลายเดือน ก็เกือบลืมๆ เรื่องราวนั้นไปแล้ว วันนี้ก็ถือโอกาสกลับมานึกถึงมันอีกซักครั้ง</p>
<p>จริงๆแล้วที่กลับมาสนใจอีกครั้ง ก็เนื่องมาจากว่า มีน้องคนหนึ่งมาถามผมว่า &#8220;ตอนนี้มีใคร ใช้ iphone หรือ blackberry บ้าง พอดีว่าจำเป็นที่จะต้องซื้อสิ้นเดือนนี้&#8221; ส่วนตัวผมเฉยๆ นะ ระหว่างไอ้ 2 เจ้านี้..แต่ถ้าต้องเลือกจริงๆ คงไม่แคล้ว iphone จะได้เอามาเป็นเพื่อนกับ น้อง <a href="http://www.aoddy.com/2010/05/13/im-mac/" target="_blank">Maccy</a> ในห้อง <img src='http://www.aoddy.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  นี่ก็ยังไม่ได้ถามน้องมันว่าสรุปแล้วเลือกอันไหน..แต่คงไม่แคล้ว BB <img src='http://www.aoddy.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p>ประเด็นไม่ได้บอกว่าผมจะแนะนำให้ซื้อมือถืออะไร แต่จะดีกว่ามั๊ยถ้าเราจะเลือกซื้ออะไรซักอย่าง (เสียตังส์) เนี้ยมันควรที่จะมีการนำข้อมูล ทั้งหมดหรือใกล้เคียง เช่น ข้อมูลด้านเทคนิค ราคา ความชอบ ความสวย แล้วก็เอาสิ่งเหล่านี้ยัดใส่ลงไปใน Black-Box กล่องหนึ่ง แล้วสุดท้ายไอ้กล้องนี้..มันก็ตอบมาว่า เลือก MileStone ครับพี่ เพราะ %^$%^%&amp;&amp;^*&amp;*  เป็นต้น</p>
<p><span id="more-1095"></span></p>
<p></p>
<p>ไอ้กล่องดำนั่นแหละครับ ที่ผมสนใจและโดยส่วนใหญ่แล้วมันก็จะใช้วิธีที่เรียกว่า MCDA ไอ้เจ้า MCDA นี่ก็มีหลายวิธีที่เดียว ผมไปเจอ List ใน <a href="http://en.wikipedia.org/wiki/Multi-criteria_decision_analysis" target="_blank">Wikipedia</a> ก็มีดังนี้</p>
<ul>
<li><a title="Analytic hierarchy process" href="http://en.wikipedia.org/wiki/Analytic_hierarchy_process">Analytic  hierarchy process</a> (AHP)</li>
<li><a title="Analytic network process" href="http://en.wikipedia.org/wiki/Analytic_network_process">Analytic network process</a> (ANP)</li>
<li><a title="Inner product of vectors" href="http://en.wikipedia.org/wiki/Inner_product_of_vectors">Inner product of  vectors</a> (IPV)</li>
<li><a title="Multi-attribute value theory (page does not exist)" href="http://en.wikipedia.org/w/index.php?title=Multi-attribute_value_theory&amp;action=edit&amp;redlink=1">Multi-attribute  value theory</a> (MAVT)</li>
<li><a title="Multi-attribute utility theory (page does not  exist)" href="http://en.wikipedia.org/w/index.php?title=Multi-attribute_utility_theory&amp;action=edit&amp;redlink=1">Multi-attribute utility theory</a> (MAUT)</li>
<li><a title="Multi-Attribute Global Inference of Quality" href="http://en.wikipedia.org/wiki/Multi-Attribute_Global_Inference_of_Quality">Multi-Attribute  Global Inference of Quality</a> (MAGIQ)</li>
<li><a title="Goal  programming" href="http://en.wikipedia.org/wiki/Goal_programming">Goal programming</a></li>
<li><a title="ELECTRE" href="http://en.wikipedia.org/wiki/ELECTRE">ELECTRE</a> (Outranking)</li>
<li><a title="PROMETHÉE (page does not exist)" href="http://en.wikipedia.org/w/index.php?title=PROMETH%C3%89E&amp;action=edit&amp;redlink=1">PROMETHÉE</a> (Outranking)</li>
<li><a title="Data envelopment analysis" href="http://en.wikipedia.org/wiki/Data_envelopment_analysis">Data envelopment analysis</a></li>
<li>The <a title="Evidential reasoning approach" href="http://en.wikipedia.org/wiki/Evidential_reasoning_approach">evidential reasoning approach</a></li>
<li><a title="Dominance-based Rough Set Approach" href="http://en.wikipedia.org/wiki/Dominance-based_Rough_Set_Approach">Dominance-based Rough Set  Approach</a> (DRSA)</li>
<li><a title="Aggregated Indices Randomization Method" href="http://en.wikipedia.org/wiki/Aggregated_Indices_Randomization_Method">Aggregated Indices  Randomization Method</a> (AIRM)</li>
<li><a title="Nonstructural Fuzzy Decision Support System" href="http://en.wikipedia.org/wiki/Nonstructural_Fuzzy_Decision_Support_System">Nonstructural  Fuzzy Decision Support System</a> (NSFDSS)</li>
<li><a title="Grey relational analysis" href="http://en.wikipedia.org/wiki/Grey_relational_analysis">Grey relational analysis</a> (GRA)</li>
<li><a title="Superiority and inferiority ranking method" href="http://en.wikipedia.org/wiki/Superiority_and_inferiority_ranking_method">Superiority and  inferiority ranking method</a> (SIR method)</li>
<li><a title="Potentially All Pairwise RanKings of all possible  Alternatives (page does not exist)" href="http://en.wikipedia.org/w/index.php?title=Potentially_All_Pairwise_RanKings_of_all_possible_Alternatives&amp;action=edit&amp;redlink=1">Potentially All Pairwise RanKings of  all possible Alternatives</a> (PAPRIKA)</li>
<li><a title="Value Engineering" href="http://en.wikipedia.org/wiki/Value_Engineering">Value Engineering</a> (VE)</li>
<li><a title="Value  analysis" href="http://en.wikipedia.org/wiki/Value_analysis">Value analysis</a> (VA)</li>
</ul>
<p>เท่าที่ดู ก็มีอยู่ 2 อันที่ผมเคยเรียน คือ ELECTRE กับ PROMETHEE (ELECTRE โปรแกรมเห่ยมาก..ใช้ไปใช้มาถึงขั้นต้อง Restart เครื่องกันเลยทีเดียว) ออกตัวล้อดังเอียดว่าผมคงไม่นั่งเจาะทั้งหมด คงเลือกมาซัก 2-3 อัน</p>
<p>แอบไป Search ดูเห็นประเทศอื่นเค้าถึงกับตั้งเป็น<a href="http://www.un.org/esa/sustdev/natlinfo/indicators/idsd/methodologies/criteria.htm" target="_blank">องค์กรนี้</a> กับ <a href="http://www.mcdmsociety.org/" target="_blank">องค์กรนี้</a> ขึ้นมากันเลยทีเดียว</p>
<p><strong>แผนการชั่วร้าย</strong></p>
<ul>
<li><em><span style="text-decoration: underline;">Short term </span></em>คงนั่งเก็บข้อมูลไปก่อน &#8211; สิ้นปี 2010 (แน่นอน..เดี๋ยวเอามาฝาก)</li>
<li><span style="text-decoration: underline;"><em>Middle term</em></span> เขียน Software มาซักตัวด้วย C++ บน Ubuntu (ช่วงนี้เห่อ C++ <img src='http://www.aoddy.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  )  &#8211; กลางปีหน้า 2011</li>
<li><span style="text-decoration: underline;"><em>Long term</em></span> มี Logic อยู่ในหัว..ก็คงดีไม่ใช่น้อย..ถ้าเอามายัดลง Android  &#8211; สิ้นปีหน้า 2011</li>
</ul>
<p></p>
<p><strong>แหล่งอ้างอิง</strong></p>
<ul>
<li><a href="http://en.wikipedia.org/wiki/Multi-criteria_decision_analysis" target="_blank">http://en.wikipedia.org/wiki/Multi-criteria_decision_analysis</a></li>
<li><a href="http://www.mcdmsociety.org/">http://www.mcdmsociety.org/</a></li>
<li><a href="http://www.un.org/esa/sustdev/natlinfo/indicators/idsd/methodologies/criteria.htm" target="_blank">http://www.un.org/esa/sustdev/natlinfo/indicators/idsd/methodologies/criteria.htm</a></li>
</ul>
<p>Picture by : <a href="http://www.natchers.com/wp-content/uploads/2008/07/gear4-blackbox-micro.jpg" target="_blank">www.natchers.com</a></p>

<p><a href="http://feedads.g.doubleclick.net/~a/QUknhxghUaOUoh_R-NqiN2MXoEA/0/da"><img src="http://feedads.g.doubleclick.net/~a/QUknhxghUaOUoh_R-NqiN2MXoEA/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/QUknhxghUaOUoh_R-NqiN2MXoEA/1/da"><img src="http://feedads.g.doubleclick.net/~a/QUknhxghUaOUoh_R-NqiN2MXoEA/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/feedburner/UKqh/~4/r0F9MQ3BNDQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.aoddy.com/2010/05/29/multi-criteria-decision-analysis/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.aoddy.com/2010/05/29/multi-criteria-decision-analysis/</feedburner:origLink></item>
		<item>
		<title>Chrome for Mac is already…</title>
		<link>http://feedproxy.google.com/~r/feedburner/UKqh/~3/JiPDhOqotMA/</link>
		<comments>http://www.aoddy.com/2010/05/26/chrome-for-mac-is-already/#comments</comments>
		<pubDate>Tue, 25 May 2010 20:10:15 +0000</pubDate>
		<dc:creator>aoddy</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Chrome]]></category>

		<guid isPermaLink="false">http://www.aoddy.com/?p=1090</guid>
		<description><![CDATA[http://www.google.com/chrome?platform=mac&#38;hl=en]]></description>
			<content:encoded><![CDATA[<p><a href="http://2.bp.blogspot.com/_EsaGlPOyn20/S_vrNRY_UnI/AAAAAAAAAGc/Zosb2pmeunA/s1600/Christoph+Niemann.png"><img class="alignleft" src="http://2.bp.blogspot.com/_EsaGlPOyn20/S_vrNRY_UnI/AAAAAAAAAGc/Zosb2pmeunA/s1600/Christoph+Niemann.png" alt="Chrome for Mac" width="450" height="447" /></a></p>
<p><a href="http://www.google.com/chrome?platform=mac&amp;hl=en" target="_blank">http://www.google.com/chrome?platform=mac&amp;hl=en</a></p>

<p><a href="http://feedads.g.doubleclick.net/~a/1K380iu8m0LwFbnoFpzJU9L8nc0/0/da"><img src="http://feedads.g.doubleclick.net/~a/1K380iu8m0LwFbnoFpzJU9L8nc0/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/1K380iu8m0LwFbnoFpzJU9L8nc0/1/da"><img src="http://feedads.g.doubleclick.net/~a/1K380iu8m0LwFbnoFpzJU9L8nc0/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/feedburner/UKqh/~4/JiPDhOqotMA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.aoddy.com/2010/05/26/chrome-for-mac-is-already/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.aoddy.com/2010/05/26/chrome-for-mac-is-already/</feedburner:origLink></item>
		<item>
		<title>ค่าสินสอด</title>
		<link>http://feedproxy.google.com/~r/feedburner/UKqh/~3/DWVOW7rCvEk/</link>
		<comments>http://www.aoddy.com/2010/05/22/sin-sod/#comments</comments>
		<pubDate>Sat, 22 May 2010 15:17:07 +0000</pubDate>
		<dc:creator>aoddy</dc:creator>
				<category><![CDATA[ทั่วไป]]></category>

		<guid isPermaLink="false">http://www.aoddy.com/?p=1087</guid>
		<description><![CDATA[aoddy :  The new mission is started !!!: ปกติ..เค้าคิดค่าสินสอดกันยังไงอ่ะ เพื่อนสาว : แล้วแต่อ่ะ เพื่อนสาว : ถ้ากลาง ๆ เพื่อนสาว : ก็สักสองแสน เพื่อนสาว : ทอง 20 บาท aoddy :  The new mission is started !!!: อืมมม เพื่อนสาว : ถ้าลดมาหน่อยก็สิบ สิบ เพื่อนสาว : บา &#8230; <a href="http://www.aoddy.com/2010/05/22/sin-sod/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>aoddy :  The new mission is started !!!: ปกติ..เค้าคิดค่าสินสอดกันยังไงอ่ะ<br />
เพื่อนสาว : แล้วแต่อ่ะ<br />
เพื่อนสาว : ถ้ากลาง ๆ<br />
เพื่อนสาว : ก็สักสองแสน<br />
เพื่อนสาว : ทอง 20 บาท<br />
aoddy :  The new mission is started !!!: อืมมม<br />
เพื่อนสาว : ถ้าลดมาหน่อยก็สิบ สิบ<br />
เพื่อนสาว : บา<br />
เพื่อนสาว : บางทีก็ห้าแสน<br />
เพื่อนสาว : เลือกเอาตามโปรโมชั่น<br />
เพื่อนสาว : 5555<br />
aoddy :  The new mission is started !!!: เหอะๆๆ</p>

<p><a href="http://feedads.g.doubleclick.net/~a/AGpwxKlVUMIoH6sYDhK_UC47p4s/0/da"><img src="http://feedads.g.doubleclick.net/~a/AGpwxKlVUMIoH6sYDhK_UC47p4s/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/AGpwxKlVUMIoH6sYDhK_UC47p4s/1/da"><img src="http://feedads.g.doubleclick.net/~a/AGpwxKlVUMIoH6sYDhK_UC47p4s/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/feedburner/UKqh/~4/DWVOW7rCvEk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.aoddy.com/2010/05/22/sin-sod/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.aoddy.com/2010/05/22/sin-sod/</feedburner:origLink></item>
	</channel>
</rss>
