24-8 �P��Ʈw��X

¸g¥Ñ WSH¡A§Ú­Ì¤]¥i¥H¹ï¸ê®Æ®w¶i¦æ·s¼W¡B­×§ï¡B§R°£µ¥°Ê§@¡A³o¨Ç°Ê§@¤]³£¾a SQL «ü¥O¨Ó¹F¦¨¡CÁ|¨Ò¨Ó»¡¡A­Y­n¹ï test.mdb ¶i¦æ¦Cªí¡A­Y¥Î ASP¡A¥i¨£¤U¦C½d¨Ò¡G

Example¡]listdb01.asp¡^¡G

¤W­z½d¨Òªº­ì©lÀɦp¤U¡G

­ì©lÀÉ¡]listdb01.asp¡^¡G¡]¦Ç¦â°Ï°ì«ö¨â¤U§Y¥i«þ¨©¡^
<%@ language="jscript" %>
<% title="¥H JScript ¶i¦æ¸ê®Æ®w¦Cªí" %>
<!--#include file="head.inc"-->
<hr>

<%
//====== Step 1¡G«Ø¥ß¸ê®Æ®w³sµ²¡AµM«á¶}±Ò¸ê®Æ®w
Conn = Server.CreateObject("ADODB.Connection");
Conn.ConnectionString = "DBQ=" + Server.MapPath("test.mdb") + ";Driver={Microsoft Access Driver (*.mdb)};Driverld=25;FIL=MS Access;";
Conn.Open();

//====== Step 2¡G°õ¦æSQL«ü¥O¡A¨Ã±N¬d¸ßµ²ªGÀx¦s©ó Recordset ¤¤
SQL = "Select * from testTable";	//±q¸ê®Æªí testTable ¨ú¥X©Ò¦³¸ê®Æ
RS = Conn.Execute(SQL);
%>

<table border=1 align=center>
<tr bgcolor="cyan">
<%
//====== Step 3¡G³z¹L RecordSet ¶°¦X¨ú±oÄæ¦ìªº¤º®e
//¦L¥XÄæ¦ì¦WºÙ
for (i=0; i<RS.Fields.Count; i++)
	Response.write("<th>"+RS(i).Name+"</th>\n");
%>
</tr>
<%
//¦L¥X¨C¤@µ§¸ê®Æ
while (!RS.EOF) {
	Response.write("<tr>\n");
	for (i=0; i<RS.Fields.Count; i++)
		Response.write("<td>"+RS(i)+"&nbsp;</td>\n");
	RS.MoveNext();
}
%>
</table>

<%
//====== Step 4¡GÃö³¬ RecordSet ¤Î¸ê®Æ®w³sµ²
RS.Close();
Conn.Close();
%>

<hr>
<!--#include file="foot.inc"-->

­Y§ï¥Î WSH ¨Ó¹ï¸ê®Æ®w¦Cªí¡Aµ{¦¡½X«Ü±µªñ¡A¦p¤U¡G

­ì©lÀÉ¡]dbList01.js¡^¡G¡]¦Ç¦â°Ï°ì«ö¨â¤U§Y¥i«þ¨©¡^
// ¨Ï¥Î WSH ¦C¥X¸ê®Æ®wªº¤º®e

//====== Step 1¡G«Ø¥ß¸ê®Æ®w³sµ²¡AµM«á¶}±Ò¸ê®Æ®w
database="test.mdb";
conn = WScript.CreateObject("ADODB.Connection");
conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+database; 
conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source="+database;	// 64-bit Office
conn.Open();

//====== Step 2¡G°õ¦æSQL«ü¥O¡A¨Ã±N¬d¸ßµ²ªGÀx¦s©ó recordset ¤¤
recordSet = WScript.CreateObject("ADODB.RecordSet"); 
sql = "SELECT * FROM testTable"; //±q¸ê®Æªí test ¨ú¥X©Ò¦³¸ê®Æ
recordSet.Open(sql, conn, 3, 3); 

//====== Step 3¡G³z¹L recordSet ¶°¦X¨ú±oÄæ¦ìªº¤º®e
//¦L¥XÄæ¦ì¦WºÙ
WScript.Echo("Äæ¦ì¦WºÙ¡G");
for (i=0; i<recordSet.Fields.Count; i++)
	WScript.StdOut.Write(recordSet(i).Name+"\t");
WScript.Echo("");

//¦L¥X¨C¤@µ§¸ê®Æ
i=1;
WScript.Echo("¨C¤@µ§¸ê®Æ¡G");
while (!recordSet.EOF){
	for (j=0; j<recordSet.Fields.Count; j++)
		WScript.StdOut.Write(recordSet(j)+"\t");
	WScript.StdOut.Write("\n");
	i++;
	recordSet.MoveNext();
}

//====== Step 4¡GÃö³¬ recordSet ¤Î¸ê®Æ®w³sµ²
recordSet.Close();
conn.Close();

°õ¦æ¡ucscript dbList01.js¡v«á¡A¦b DOS ©R¥Oµøµ¡¦L¥Xµ²ªG¦p¤U¡G

Äæ¦ì¦WºÙ¡G ssn account name team score ¨C¤@µ§¸ê®Æ¡G 14 abc ¸­¨Î¼z 5 33.33 15 ABC ªL¬F·½ 5 55.65 17 jtchen ³¯¦¿§ø 3 48.76 18 aBc °ª¦W´­ 1 67.88 ­Y­n¹ï¸ê®Æ®w¶i¦æ·s¼W¡A¥i¨£¤U¦C½d¨Ò¡G

­ì©lÀÉ¡]dbInsert01.js¡^¡G¡]¦Ç¦â°Ï°ì«ö¨â¤U§Y¥i«þ¨©¡^
// ¨Ï¥Î WSH ·s¼W¸ê®Æ®wªº¤º®e

//====== Step 1¡G«Ø¥ß¸ê®Æ®w³sµ²¡AµM«á¶}±Ò¸ê®Æ®w
database="test.mdb";
Conn = WScript.CreateObject("ADODB.Connection");
Conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+database; 
Conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source="+database;	// 64-bit Office
Conn.Open();

//====== Step 2¡G«Ø¥ß SQL ©R¥O¨Ã°õ¦æ¤§
SQL="INSERT INTO testTable ([account], [name]) VALUES ('new1', 'new2')";
Conn.Execute(SQL);

//====== Step 3¡GÃö³¬ RecordSet ¤Î¸ê®Æ®w³sµ²
Conn.Close();

¦pªG§A³o®É­Ô¦A°õ¦æ dbList01.js¡A´N·|µoı¸ê®Æ¤w¸g¦h¤F¤@µ§¡C

¯S§O­nª`·Nªº¬O¡ASQL «ü¥Oªº where ±ø¥ó¦¡¬O¤£¤À¤j¤p¼gªº¡A©Ò¥H¦pªG§Aªº±ø¥ó¦¡¬O name='abc'¡A³o®É­Ô§ì¥X¨Óªº¸ê®Æ¥i¯à¥]§t 'abc'¡B'ABC'¡B'aBc' µ¥¸ê®Æ¡A­Y­n¸Ñ¨M¦¹°ÝÃD¡A¥i¥H¨Ï¥Î strcomp ¨ç¼Æ¡A½Ð¨£¤U¦C½d¨Ò¡G

­ì©lÀÉ¡]dbList02.js¡^¡G¡]¦Ç¦â°Ï°ì«ö¨â¤U§Y¥i«þ¨©¡^
// ¤j¤p¼g¦³§Oªº¸ê®Æ®w¬d¸ß
sql="select * from testTable where account='abc'";
WScript.Echo("¤j¤p¼g¤£¤Àªº¤ñ¹ï¡Gsql = "+sql);
WScript.Echo("¤ñ¹ïµ²ªG¡G");
sql2screen("test.mdb", sql); 
sql="select * from testTable where strcomp(account, 'abc',0)=0";
WScript.Echo("¤j¤p¼g¦³§Oªº¤ñ¹ï¡Gsql = "+sql);
WScript.Echo("¤ñ¹ïµ²ªG¡G");
sql2screen("test.mdb", sql); 

// ====== Function definitions
function sql2screen(database, sql){
	conn = WScript.CreateObject("ADODB.Connection"); 
//	conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+database;
	conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source="+database;	// 64-bit office
	conn.Open();
	rs = WScript.CreateObject("ADODB.RecordSet"); 
	rs.Open(sql, conn, 3, 3);

	// ¦L¥XÄæ¦ì¦WºÙ
	for (i=0; i<rs.Fields.Count; i++)
		WScript.StdOut.Write(rs(i).Name+"\t");
	WScript.StdOut.Write("\n");
	// ¦L¥X¨Cµ§¸ê®Æ
	while (!rs.EOF){
		for (j=0; j<rs.Fields.Count; j++)
			WScript.StdOut.Write(rs(j)+"\t");
		WScript.StdOut.Write("\n");
		rs.MoveNext();
	}
	rs.Close();
	conn.Close();
}

¦L¥Xµ²ªG¦p¤U¡G

¤j¤p¼g¤£¤Àªº¤ñ¹ï¡Gsql = select * from testTable where account='abc' ¤ñ¹ïµ²ªG¡G ssn account name team score 14 abc ¸­¨Î¼z 5 33.33 15 ABC ªL¬F·½ 5 55.65 18 aBc °ª¦W´­ 1 67.88 ¤j¤p¼g¦³§Oªº¤ñ¹ï¡Gsql = select * from testTable where strcomp(account, 'abc',0)=0 ¤ñ¹ïµ²ªG¡G ssn account name team score 14 abc ¸­¨Î¼z 5 33.33 ¦b¤W­z­ì©l½X¤¤¡Asql2screen() ¨ç¼Æªº¥\¯à¬O±N SQL «ü¥Oªºµ²ªG¦C¦L¦b¿Ã¹õ¤W¡C¥t¤@­Ó±`¥Îªº¨ç¼Æ¬O±N SQL «ü¥Oªºµ²ªG°O¿ý¦bÀɮפ§¤¤¡A¦b¥H¤U½d¨Ò¤¤¡Asql2file() ¨ç¼Æªº¥\¯à§Y¬O¦p¦¹¡G

­ì©lÀÉ¡]dbList03.js¡^¡G¡]¦Ç¦â°Ï°ì«ö¨â¤U§Y¥i«þ¨©¡^
// ±N testTable ¸ê®Æªíªº¤º®eÀx¦s¨ì output.txt
WScript.Echo("±N testTable ¸ê®Æªíªº¤º®eÀx¦s¨ì output.txt ...");
sql2file("test.mdb", "select * from testTable", "output.txt");

// ====== Function definitions
function sql2file(database, sql, file){
	conn = WScript.CreateObject("ADODB.Connection"); 
//	conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+database;
	conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source="+database;	// 64-bit office
	conn.Open();
	rs = WScript.CreateObject("ADODB.RecordSet"); 
	rs.Open(sql, conn, 3, 3);

	fso = WScript.CreateObject("Scripting.FileSystemObject")
	fid = fso.CreateTextFile(file, true);

	// ¦L¥XÄæ¦ì¦WºÙ
	for (i=0; i<rs.Fields.Count; i++)
		fid.Write(rs(i).Name+"\t");
	fid.Write("\r\n");
	// ¦L¥X¨Cµ§¸ê®Æ
	while (!rs.EOF){
		for (j=0; j<rs.Fields.Count; j++)
			fid.Write(rs(j)+"\t");
		fid.Write("\r\n");
		rs.MoveNext();
	}
	fid.Close();
	rs.Close();
	conn.Close();
}

°õ¦æ¥H¤Wµ{¦¡«á¡AÀÉ®× output.txt ªº¤º®e¦p¤U¡G

­ì©lÀÉ¡]output.txt¡^¡G¡]¦Ç¦â°Ï°ì«ö¨â¤U§Y¥i«þ¨©¡^
ssn	account	name	team	score	
14	abc	¸­¨Î¼z	5	33.33	
15	ABC	ªL¬F·½	5	55.65	
17	jtchen	³¯¦¿§ø	3	48.76	
18	aBc	°ª¦W´­	1	67.88	


JScript µ{¦¡³]­p»PÀ³¥Î¡G¥Î©ó³æ¾÷ªº WSH Àô¹Ò