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

<channel>
	<title>聰明的生活2 &#187; database</title>
	<atom:link href="http://blog.yslifes.com/archives/category/database/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.yslifes.com</link>
	<description>自己寫java程式的一些筆記</description>
	<lastBuildDate>Tue, 27 Jul 2010 02:13:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
	<atom:link rel='hub' href='http://blog.yslifes.com/?pushpress=hub'/>
	
<!-- Start Of Script Generated By WP-PostViews Plus -->
<script type='text/javascript' src='http://blog.yslifes.com/wp-includes/js/jquery/jquery.js?ver=1.4.2'></script>
<script type="text/javascript">
/* <![CDATA[ */
jQuery.ajax({type:'GET',url:'http://blog.yslifes.com/wp-content/plugins/wp-postviews-plus/postviews_plus.php',data:'todowppvp=add&type=cat&id=71_1',cache:false,dataType:'script'});
/* ]]> */
</script>
<!-- End Of Script Generated By WP-PostViews Plus -->
	<item>
		<title>[Java]SiteMap Creater-簡單的SiteMap建立程式</title>
		<link>http://blog.yslifes.com/archives/678</link>
		<comments>http://blog.yslifes.com/archives/678#comments</comments>
		<pubDate>Tue, 22 Jun 2010 08:18:27 +0000</pubDate>
		<dc:creator>yku</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[yahoo]]></category>
		<category><![CDATA[教學]]></category>
		<category><![CDATA[程式]]></category>
		<category><![CDATA[sitemap]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://blog.yslifes.com/archives/678</guid>
		<description><![CDATA[SiteMapCreater主要的功能在自動產生SiteMap.xml，只需要在資料庫表格裡建立所要產生的SiteMap網址等資訊就可以執行它來自動產生需要的SiteMap而提交給Google或yahoo等搜尋引擎。 這個程式主要是獨立作業的，可以利用windows或是linux的排程來執行jar run就可以了，這樣子可以減少對伺服器的負擔。 程式的作法是從資料庫取得資料，再把資料加上xml需要的字串，然後最後輸出成檔案就可以了，中間有些需要注意的地方，像是筆數不可太多，此程式設定4000筆會換一個檔案名稱，還有檔案也不可超過太大，8mb以下或更小。 執行後會得到以下檔案，一個index的Sitemap.xml及實際的內容的Info0.xml，另外還需要一個xsl來當讀取樣版的準則，向搜尋引擎只需要提交Sitemap.xml這個檔案就可以了，程式還會自動把所有檔案變成一個zip檔，google可以提交zip檔案做為SiteMap，不過此部份並未成功，有興趣的朋友可以再加以改進。 主要產生xml程式碼 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 [...]]]></description>
		<wfw:commentRss>http://blog.yslifes.com/archives/678/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>[jsp]利用Google Map查詢經緯度</title>
		<link>http://blog.yslifes.com/archives/622</link>
		<comments>http://blog.yslifes.com/archives/622#comments</comments>
		<pubDate>Mon, 26 Apr 2010 13:47:37 +0000</pubDate>
		<dc:creator>yku</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[prototype]]></category>
		<category><![CDATA[教學]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[jsp]]></category>
		<category><![CDATA[map]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://blog.yslifes.com/archives/622</guid>
		<description><![CDATA[如果手上有一堆地址清單想要知道它們的經緯度如何？要怎麼做呢？這裡介紹一個很簡單的方法，利用二個Ajax及Google Map就可以完成，一個要求地址欄位及key值（這其實可以直接全都先輸出成javascript的Array就好了），另一個接收到經緯度資料後回傳給Server做儲存（這也可以直接利用一個TextArea存放，到時再複製起來存放），而Google Map最主要的功能就是把地址轉換成經緯度。 做法及想法如下： 1.建立資料庫Table 需要有一個pk值、地址、經度、緯度及一個記錄是否已取得成功的註記符號，MySQL語法如下： ps.先建立幾筆資料做測試，如下insert 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 CREATE TABLE `test`.`Address` &#40; `id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, `zip_name` VARCHAR&#40;45&#41; NOT NULL, `address` VARCHAR&#40;500&#41; NOT NULL, `latitude` VARCHAR&#40;100&#41;, `longitude` VARCHAR&#40;100&#41;, `flg` VARCHAR&#40;1&#41;, PRIMARY KEY &#40;`id`&#41; &#41; ENGINE = InnoDB; &#160; INSERT [...]]]></description>
		<wfw:commentRss>http://blog.yslifes.com/archives/622/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>java.sql.ResultSet absolute造成out of memory</title>
		<link>http://blog.yslifes.com/archives/360</link>
		<comments>http://blog.yslifes.com/archives/360#comments</comments>
		<pubDate>Fri, 31 Jul 2009 13:59:16 +0000</pubDate>
		<dc:creator>yku</dc:creator>
				<category><![CDATA[Exception]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[jsp]]></category>
		<category><![CDATA[程式]]></category>
		<category><![CDATA[memory]]></category>
		<category><![CDATA[out of memory]]></category>

		<guid isPermaLink="false">http://blog.yslifes.com/archives/360</guid>
		<description><![CDATA[java.sql.ResultSet 使用absolute方法可以移動ResultSet的指標到想要的筆數， 當 JDBC跟資料庫要資料時，會回傳一個ResultSet，但不是把所有查詢的結果均回傳至Web Server端， 而是只給前面幾筆資料，可以利用ResultSet的方法setFetchSize來設定一次回傳的筆數， (一次傳的多，等待的時間就比較長，傳的太少，要一直跟資料庫要ResultSet.next()也會比較慢) 當ResultSet向下移動碰觸或是快要碰觸到目前回傳的筆數時，會自動再跟資料庫要設定好的筆數， 而把目前筆數以上的資料全都暫存在記憶體裡。 以上是ResulSet的基本原理，當一次查詢的量夠大時，而利用absolute來移動到想要的Row時， 就有可能發生out of memory的問題， 舉個列子： 當想要取得總筆數來做分頁的totrec計算，這時利用absolute移動到最後一筆，取得getRow()來當總數， 這時資料庫會把所有的資料均吐出來給Web Server，而Web Server也會把資料暫存到記憶體裡， 而有多人一起執行這個動作時，像jsp同時有多人一起看同一頁時，則記憶體會完全來不及釋放， 試想有十萬筆*n個要求的資料暫存在記憶體裡，所以這很容易行成out of memory的Runtime Error。 解決方法其實很簡單，就是不要用absolute來取得總筆數，而是利用SQL先跟資料庫要總筆數， (select count(*) as totrec from table where 條件) 當總筆數大於零時，再跟資料庫查詢想要的資料範圍(Oracle:where field between a And b 或是MySQL: limit a,b)， 二次的請求一定比直接使用absolute佔用的記憶體少。 相關資料： Java Gossip: ResultSet 游標控制 Interface ResultSet]]></description>
		<wfw:commentRss>http://blog.yslifes.com/archives/360/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java執行Store Procedure預儲程序</title>
		<link>http://blog.yslifes.com/archives/352</link>
		<comments>http://blog.yslifes.com/archives/352#comments</comments>
		<pubDate>Fri, 17 Jul 2009 10:22:00 +0000</pubDate>
		<dc:creator>yku</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[sp]]></category>
		<category><![CDATA[store-procedure]]></category>

		<guid isPermaLink="false">http://blog.yslifes.com/archives/352</guid>
		<description><![CDATA[利用JDBC取得Connection後，可以利用以下幾種方式來執行資料庫的Store Procedure 1.沒參數 CallableStatement cs;&#160; try {&#160; &#160; // 設定 CallableStatement&#160; &#160; cs = connection.prepareCall(&#34;{call myproc}&#34;);&#160; &#160; // 執行 CallableStatement&#160; &#160; cs.execute();&#160; } catch (SQLException e) {&#160; }&#160; &#160; 2.有IN參數 &#160; CallableStatement cs; try { &#160; // 設定 CallableStatement &#160; cs = connection.prepareCall(&#34;{call myprocin(?)}&#34;); &#160; // 設定 IN 參數的 Index 及值 &#160; cs.setString(1, &#34;IN值&#34;); &#160; [...]]]></description>
		<wfw:commentRss>http://blog.yslifes.com/archives/352/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>自動取號AutoEnCode-Oracle Stored Procedures</title>
		<link>http://blog.yslifes.com/archives/351</link>
		<comments>http://blog.yslifes.com/archives/351#comments</comments>
		<pubDate>Wed, 15 Jul 2009 10:12:00 +0000</pubDate>
		<dc:creator>yku</dc:creator>
				<category><![CDATA[database]]></category>
		<category><![CDATA[autoencode]]></category>
		<category><![CDATA[oracle]]></category>

		<guid isPermaLink="false">http://blog.yslifes.com/archives/351</guid>
		<description><![CDATA[在Oracle裡並沒有像MySql那樣子有自動編號的功能， 如果需要產生不重覆的編號，這時就需要自己動手來做了， 大概的方法有二，不過概念基本上是相同的， 想法，利用一個Table存放編號資料，例如檔頭及碼長及取號的來源（那一個Table） 每次需要取號時則跟此Table要資訊，並把碼長+1存放回去，順便回傳碼長+1 可以利用程式來編寫或是直接在Oracle上寫Sotre Procedures或function 比較建議在Oracle上直接撰寫sp，這樣子不管是其它的SP或是Server上的程式二者均可使用， 不需要另外再行撰寫 底下是一個Sotre Procedures的範例 輸入執為（取號的來源），輸出執為編號 存放的Table為AUTOENCODE 其中 CODE_COUNT 為碼號 CODE_HEAD 檔頭 CODE_MAX 最大長度（碼號的長度） create or replace PROCEDURE&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#34;AUTOCODE&#34; ( C_TYPE IN VARCHAR2, C_COUNT OUT VARCHAR2) IS &#160; --rowTYPE AUTOENCODE%TYPE; &#160; data_RAW NUMBER; &#160; data_HEAD VARCHAR2(2); &#160; data_MAX NUMBER ; &#160; str_ZERO VARCHAR2(10); &#160; str_TEMP VARCHAR2(20); &#160; &#160; cursor [...]]]></description>
		<wfw:commentRss>http://blog.yslifes.com/archives/351/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
