{"id":314,"date":"2013-06-07T10:40:45","date_gmt":"2013-06-07T10:40:45","guid":{"rendered":"http:\/\/yoonhada.com\/wp\/?p=314"},"modified":"2013-06-07T10:40:45","modified_gmt":"2013-06-07T10:40:45","slug":"sqlite%ec%9d%98-stmt%eb%a5%bc-%ec%9e%ac%ed%99%9c%ec%9a%a9sqlite3_reset%ed%95%98%ec%97%ac-%ec%84%b1%eb%8a%a5-%ed%96%a5%ec%83%81-%ec%8b%9c%ed%82%a4%ea%b8%b0","status":"publish","type":"post","link":"http:\/\/yoonhada.com\/?p=314","title":{"rendered":"sqlite\uc758 stmt\ub97c \uc7ac\ud65c\uc6a9(sqlite3_reset)\ud558\uc5ec \uc131\ub2a5 \ud5a5\uc0c1 \uc2dc\ud0a4\uae30"},"content":{"rendered":"<p>\t\t\t\t<a href=\"http:\/\/greenfishblog.tistory.com\/m\/post\/view\/id\/151\">http:\/\/greenfishblog.tistory.com\/m\/post\/view\/id\/151<\/a><\/p>\n<p>sqlite3\ub97c \uc0ac\uc6a9\ud558\uc5ec Insert\ub098 Query\ud560 \ub54c \uc544\ub798\uc640 \uac19\uc740 \ubc29\ubc95\uc73c\ub85c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<br \/>\n(\ub9ac\ud134\uac12 \uccb4\ud06c\ub294 \ud544\uc218\uc774\uc9c0\ub9cc, \uac04\ub7b5\ud558\uac8c \ud45c\uc2dc\ud558\uae30 \uc704\ud574 \uc81c\uc678\ud558\uc600\uc2b5\ub2c8\ub2e4)<\/p>\n<p>(1) sqlite3_exec\uc744 \ud1b5\ud574 SQL\ubb38\uc744 \uadf8\ub300\ub85c \ub9cc\ub4e4\uc5b4 \uc804\ub2ec\ud558\uace0, query\ub294 callback \ud568\uc218\ub97c \ud1b5\ud574 \uc804\ub2ec \ubc1b\uc74c<\/p>\n<table style=\"width: 610px;\" cellspacing=\"1\" cellpadding=\"1\" bgcolor=\"#eaf4cf\">\n<tbody>\n<tr>\n<td width=\"100%\">int fnCallback(void* arg, int columns, wchar_t** value, wchar_t** name)<br \/>\n{<br \/>\n&#8230;<br \/>\n}<br \/>\n&#8230;<br \/>\nfor (&#8230;)<br \/>\n{<br \/>\n&#8230;<br \/>\n<strong><span style=\"color: #5fb636;\">\/\/\u00a0DB QUERY<br \/>\n<\/span><\/strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #ff8b16;\"><strong>sqlite3_exec<\/strong><\/span>(db, &#8220;<span style=\"color: #49b5d5;\"><strong>SELECT &#8230;<\/strong><\/span>&#8220;, fnCallback, pContext, NULL);<br \/>\n&#8230;<br \/>\n<strong><span style=\"color: #5fb636;\">\/\/ DB INSERT<br \/>\n<\/span><\/strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<strong><span style=\"color: #ff8b16;\">sqlite3_exec<\/span><\/strong>(db, &#8220;<strong><span style=\"color: #49b5d5;\">INSERT &#8230;<\/span><\/strong>&#8220;, NULL, NULL, NULL);<br \/>\n&#8230;<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>(2) statement\ub97c prepare\ud558\uc5ec callback \ud568\uc218 \uc5c6\uc774 \uac01 \uac12\ub4e4\uc758 bind\ub97c \ud1b5\ud574 \uc804\ub2ec\ud558\uace0 \uc804\ub2ec \ubc1b\uc74c<\/p>\n<table style=\"width: 610px;\" cellspacing=\"1\" cellpadding=\"1\" bgcolor=\"#eaf4cf\">\n<tbody>\n<tr>\n<td width=\"100%\">\u00a0\u00a0\u00a0 &#8230;<br \/>\n<span style=\"color: #ff8b16;\"><strong>sqlite3_stmt<\/strong><\/span>* pStmt = NULL;<br \/>\n&#8230;<br \/>\nfor (&#8230;)<br \/>\n{<br \/>\n<strong><span style=\"color: #5fb636;\">\/\/ DB INSERT<br \/>\n<\/span><\/strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<strong><span style=\"color: #ff8b16;\">sqlite3_finialize<\/span><\/strong>(pStmt);<br \/>\n<strong><span style=\"color: #ff8b16;\">sqlite3_prepare<\/span><\/strong>(db, &#8220;<strong><span style=\"color: #49b5d5;\">INSERT &#8230; (?,?)<\/span><\/strong>&#8220;, -1, &amp;pStmt, NULL);<br \/>\n<strong><span style=\"color: #ff8b16;\">sqlite3_bind_int<\/span><\/strong>(pStmt, 1, 123);<br \/>\n<strong><span style=\"color: #ff8b16;\">sqlite3_bind_int<\/span><\/strong>(pStmt, 2, 456);<br \/>\n<strong><span style=\"color: #ff8b16;\">sqlite3_step<\/span><\/strong>(pStmt);<br \/>\n<strong><span style=\"color: #ff8b16;\">sqlite3_finalize<\/span><\/strong>(pStmt);<br \/>\npStmt = NULL;<br \/>\n&#8230;<br \/>\n<strong><span style=\"color: #5fb636;\">\/\/\u00a0DB QUERY<br \/>\n<\/span><\/strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<strong><span style=\"color: #ff8b16;\">sqlite3_prepare<\/span><\/strong>(db, &#8220;<strong><span style=\"color: #49b5d5;\">SELECT\u00a0a,b,c &#8230; WHERE a=? AND b=?<\/span><\/strong>&#8220;, -1, &amp;pStmt, NULL);<br \/>\n<strong><span style=\"color: #ff8b16;\">sqlite3_bind_int<\/span><\/strong>(pStmt, 1, 111);<br \/>\n<strong><span style=\"color: #ff8b16;\">sqlite3_bind_int<\/span><\/strong>(pStmt, 2, 333);<br \/>\nfor (;;)<br \/>\n{<br \/>\nif (<span style=\"color: #ff8b16;\"><strong>SQLITE_ROW<\/strong><\/span>\u00a0==\u00a0<strong><span style=\"color: #ff8b16;\">sqlite3_step<\/span><\/strong>(pStmt))<br \/>\n{<br \/>\nnA =\u00a0<strong><span style=\"color: #ff8b16;\">sqlite3_column_int<\/span><\/strong>(pStmt, 0);<br \/>\nnB =\u00a0<strong><span style=\"color: #ff8b16;\">sqlite3_column_int<\/span><\/strong>(pStmt, 1);<br \/>\nnC =\u00a0<strong><span style=\"color: #ff8b16;\">sqlite3_column_int<\/span><\/strong>(pStmt, 2);<br \/>\n}<br \/>\nelse<br \/>\n{<br \/>\nbreak;<br \/>\n}<br \/>\n}<br \/>\n<strong><span style=\"color: #ff8b16;\">sqlite3_finalize<\/span><\/strong>(pStmt);<br \/>\npStmt = NULL;<br \/>\n&#8230;<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>(3) statement\ub97c \ub2e8 \ud55c\ubc88\ub9cc prepare\ud558\uace0 \ud544\uc694\uc2dc reset\ud558\uc5ec \uc7ac\uc0ac\uc6a9<\/p>\n<table style=\"width: 610px;\" cellspacing=\"1\" cellpadding=\"1\" bgcolor=\"#eaf4cf\">\n<tbody>\n<tr>\n<td width=\"100%\">\u00a0\u00a0\u00a0 &#8230;<br \/>\n<strong><span style=\"color: #ff8b16;\">sqlite3_stmt<\/span><\/strong>* pStmtInsert = NULL;<br \/>\n<strong><span style=\"color: #ff8b16;\">sqlite3_stmt<\/span><\/strong>* pStmtQuery\u00a0 = NULL;<br \/>\n&#8230;<br \/>\n<strong><span style=\"color: #ff8b16;\">sqlite3_prepare<\/span><\/strong>(db, &#8220;<strong><span style=\"color: #49b5d5;\">INSERT &#8230; (?,?)<\/span><\/strong>&#8220;, -1, &amp;pStmtInsert, NULL);<br \/>\n<strong><span style=\"color: #ff8b16;\">sqlite3_prepare<\/span><\/strong>(db, &#8220;<strong><span style=\"color: #49b5d5;\">SELECT\u00a0a,b,c &#8230; WHERE a=? AND b=?<\/span><\/strong>&#8220;, -1, &amp;pStmtQuery, NULL);<br \/>\n&#8230;<br \/>\nfor (&#8230;)<br \/>\n{<br \/>\n<span style=\"color: #5fb636;\"><strong>\/\/ DB INSERT<br \/>\n<\/strong><\/span>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<strong><span style=\"color: #ff8b16;\">sqlite3_reset<\/span><\/strong>(pStmtInsert);<br \/>\n<strong><span style=\"color: #ff8b16;\">sqlite3_bind_int<\/span><\/strong>(pStmtInsert, 1, 123);<br \/>\n<strong><span style=\"color: #ff8b16;\">sqlite3_bind_int<\/span><\/strong>(pStmtInsert, 2, 456);<br \/>\n<strong><span style=\"color: #ff8b16;\">sqlite3_step<\/span><\/strong>(pStmtInsert);<br \/>\n&#8230;<br \/>\n<span style=\"color: #5fb636;\"><strong>\/\/\u00a0DB QUERY<br \/>\n<\/strong><\/span>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<strong><span style=\"color: #ff8b16;\">sqlite3_reset<\/span><\/strong>(pStmtQuery);<br \/>\n<strong><span style=\"color: #ff8b16;\">sqlite3_bind_int<\/span><\/strong>(pStmtQuery, 1, 111);<br \/>\n<strong><span style=\"color: #ff8b16;\">sqlite3_bind_int<\/span><\/strong>(pStmtQuery, 2, 333);<br \/>\nfor (;;)<br \/>\n{<br \/>\nif (<strong><span style=\"color: #ff8b16;\">SQLITE_ROW<\/span><\/strong>\u00a0==\u00a0<strong><span style=\"color: #ff8b16;\">sqlite3_step<\/span><\/strong>(pStmtQuery))<br \/>\n{<br \/>\nnA =\u00a0<strong><span style=\"color: #ff8b16;\">sqlite3_column_int<\/span><\/strong>(pStmtQuery, 0);<br \/>\nnB =\u00a0<strong><span style=\"color: #ff8b16;\">sqlite3_column_int<\/span><\/strong>(pStmtQuery, 1);<br \/>\nnC =\u00a0<strong><span style=\"color: #ff8b16;\">sqlite3_column_int<\/span><\/strong>(pStmtQuery, 2);<br \/>\n}<br \/>\nelse<br \/>\n{<br \/>\nbreak;<br \/>\n}<br \/>\n}<br \/>\n&#8230;<br \/>\n}<br \/>\n&#8230;<br \/>\n<span style=\"color: #ff8b16;\"><strong>sqlite3_finalize<\/strong><\/span>(pStmtInsert);<br \/>\npStmtInsert = NULL;<br \/>\n<strong><span style=\"color: #ff8b16;\">sqlite3_finalize<\/span><\/strong>(pStmtQuery);<br \/>\npStmtQuery = NULL;<br \/>\n&#8230;<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\uac89\uc73c\ub85c \ud655\uc778\ud574 \ubcf4\uba74 \ubc29\ubc95 (1)\uc774 \uac00\uc7a5 \uc9e7\uace0 \uba85\ud655\ud574 \ubcf4\uc785\ub2c8\ub2e4. \uadf8\ub9ac\uace0, (3)\uc774 (2)\ubcf4\ub2e4 \uc880\ub354 \ubcf5\uc7a1\ud558\uace0 \uae4c\ub2e4\ub85c\uc640 \ubcf4\uc785\ub2c8\ub2e4. \ud558\uc9c0\ub9cc \uc131\ub2a5\uc73c\ub85c \ub530\uc9c0\uc790\uba74 (1) &lt; (2) &lt; (3) \uc785\ub2c8\ub2e4. \ubb3c\ub860 \ucd5c\uadfc\uc758 computing power\uac00 \uc88b\uc544\uc838\uc11c, \ud070 \ucc28\uc774\ub294 \uc5c6\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ud558\uc9c0\ub9cc, query\uc758 \uc591\uc774\u00a0\ub9ce\uac70\ub098 \uae38\uc774\uac00\u00a0\uae38 \uacbd\uc6b0, \ud639\uc740\u00a0record \uc218\uac00 \ub9ce\ub2e4\ub358\uc9c0, \uc5ec\ud558\ud2bc db\uc758 \ud06c\uae30\uac00 \ucee4\uc9c8 \uc218 \ub85d \uadf8 \uc131\ub2a5\uc758 \ucc28\uc774\ub294 \ub208\uc73c\ub85c \ub4dc\ub7ec\ub0a0 \uac83\uc785\ub2c8\ub2e4.<\/p>\n<p>(2)\uacfc (3)\uc758 \ucc28\uc774\ub294 sqlite3_prepare(&#8230;)\uc758 \ud638\ucd9c \ube48\ub3c4\ub77c \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. (3)\uc5d0\uc11c\ub294 \uadf8 \uc790\ub9ac\uc5d0 \ub300\uc2e0 sqlite3_reset(&#8230;)\uc774 \ub4e4\uc5b4\uac00 \uc788\uc2b5\ub2c8\ub2e4. \ud574\ub2f9 \ucf54\ub4dc\ub97c \ubcf4\uba74 sqlite3_reset\uc774 \ud6e8\uc52c \ubd80\ud558\uac00 \uc801\uc5b4 \ubcf4\uc785\ub2c8\ub2e4(\ub2e8\uc21c\ud788 memory free \uc704\uc8fc\ub85c \ub418\uc5b4 \uc788\uc74c). \ubb3c\ub860 sqlite3_prepare\ub294 btree \ud638\ucd9c\ub3c4 \uc788\uace0 \uad6c\ubb38 parsing\ub3c4 \uc788\uc2b5\ub2c8\ub2e4.\u00a0\uc704 \uc608\uc5d0\uc11c\ub294 \ub204\ub77d\ub418\uc5b4 \uc788\uc9c0\ub9cc, sqlite3_reset\uc758 \ub9ac\ud134\uac12 \uccb4\ud06c\ub294 \ud574\uc8fc\ub294 \uac83\uc774 \uc911\uc694\ud569\ub2c8\ub2e4.\t\t<\/p>\n","protected":false},"excerpt":{"rendered":"<p>http:\/\/greenfishblog.tistory.com\/m\/post\/view\/id\/151 sqlite3\ub97c \uc0ac\uc6a9\ud558\uc5ec Insert\ub098 Query\ud560 \ub54c \uc544\ub798\uc640 \uac19\uc740 \ubc29\ubc95\uc73c\ub85c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. (\ub9ac\ud134\uac12 \uccb4\ud06c\ub294 \ud544\uc218\uc774\uc9c0\ub9cc, \uac04\ub7b5\ud558\uac8c \ud45c\uc2dc\ud558\uae30 \uc704\ud574 \uc81c\uc678\ud558\uc600\uc2b5\ub2c8\ub2e4) (1) sqlite3_exec\uc744 \ud1b5\ud574 SQL\ubb38\uc744 \uadf8\ub300\ub85c \ub9cc\ub4e4\uc5b4 \uc804\ub2ec\ud558\uace0, query\ub294 callback \ud568\uc218\ub97c \ud1b5\ud574 \uc804\ub2ec \ubc1b\uc74c int fnCallback(void* arg, int columns, wchar_t** value, wchar_t** name) { &#8230; } &#8230; for (&#8230;) { &#8230; \/\/\u00a0DB QUERY \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0sqlite3_exec(db, &#8220;SELECT &#8230;&#8220;, fnCallback, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6,16],"tags":[],"class_list":["post-314","post","type-post","status-publish","format-standard","hentry","category-db","category-16"],"_links":{"self":[{"href":"http:\/\/yoonhada.com\/index.php?rest_route=\/wp\/v2\/posts\/314","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/yoonhada.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/yoonhada.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/yoonhada.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/yoonhada.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=314"}],"version-history":[{"count":0,"href":"http:\/\/yoonhada.com\/index.php?rest_route=\/wp\/v2\/posts\/314\/revisions"}],"wp:attachment":[{"href":"http:\/\/yoonhada.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=314"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/yoonhada.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=314"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/yoonhada.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=314"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}