作者: Blog
文件构成:
Access数据库名为 MyData.Mdb, 里面建了一个名为count的表,表由两个
字段组成: ID和COUNT,表里有一条数据: (''''count'''',''''100'''')。
文本文件名为 count.txt,里面随便写入一个数字。
静态页面名为Cnt.htm。
以上3个文件都放在同一目录下。
由于采用Access数据库,而它采用非标准SQL语法,所以要注意在表名
和字段名上需要加方括号: []
下面是页面里的代码:
其中getCountFromDB方法是对Access数据库进行操作,getCountFromTxt
方法是对txt纯文本进行操作,这两个方法都在本地执行通过。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
<SCRIPT LANGUAGE="JavaScript">
<!--
function getCountFromDB() {
//以当前页面文件为基础,找到文件所在的绝对路径。
var filePath = location.href.substring(0, location.href.indexOf("Cnt.htm"));
var path = filePath + "MyData.mdb";
//去掉字符串中最前面的"files://"这8个字符。
path = path.substring(8);
var updateCnt = 0;
//生成查询和更新用的sql语句。
var sqlSelCnt = "SELECT COUNT FROM [COUNT] WHERE ID = ''''count''''";
var sqlUpdCnt = "UPDATE [COUNT] SET [COUNT] = ''''";
//建立连接,并生成相关字符串 http://www.zhangpeng.com.cn/。
var con = new ActiveXObject("ADODB.Connection");
con.Provider = "Microsoft.Jet.OLEDB.4.0";
con.ConnectionString = "Data Source=" + path;
con.open;
var rs = new ActiveXObject("ADODB.Recordset");
rs.open(sqlSelCnt, con);
while (!rs.eof) {
var cnt = rs.Fields("COUNT");
document.write(cnt);
//将取得结果加1后更新数据库。
updateCnt = cnt * 1 + 1;
rs.moveNext;
}
rs.close();
rs = null;
sqlUpdCnt = sqlUpdCnt + updateCnt + "''''";
con.execute(sqlUpdCnt);
con.close();
con = null;
}
function getCountFromTxt() {
var filePath = location.href.substring(0, location.href.indexOf("Cnt.htm"));
var path = filePath + "count.txt";
path = path.substring(8);
var nextCnt = 0;
var fso, f1, ts, s;
//以只读方式打开文本文件。
var ForReading = 1;
//以读写方式打开文本文件。
var ForWriting = 2;
fso = new ActiveXObject("Scripting.FileSystemObject");
f1 = fso.GetFile(path);
ts = f1.OpenAsTextStream(ForReading, true);
s = ts.ReadLine();
nextCnt = eval(s) + 1;
document.write("now count is :" + s);
ts.Close();
ts = f1.OpenAsTextStream(ForWriting, true);
ts.WriteLine(nextCnt);
ts.close();
}
//-->
</SCRIPT>
</HEAD>
<BODY>
<SCRIPT LANGUAGE="JavaScript">
<!--
getCountFromTxt();
//-->
</SCRIPT>
</BODY>
</HTML>
补充:ajaxpro返回 DataSet/DataTable/DataView 如何呈现?
[code=JSscript]
// js
<script type="text/javascript">
function GetProductData()
{
var cb = function(res) {
if(res.error) return alert("发生错误\n" + res.error.Message);
//debugger;
//alert(res);
var ds = res.value;
var tbl = ds.Tables[0];
var tblHtml = " <table border=1>";
// 表头
tblHtml += " <tr>";
for(var j = 0; j < tbl.Columns.length; j++) {
tblHtml += " <th>" + tbl.Columns[j].Name + " </th>";
}
tblHtml += " </tr>";
// 数据
for(var i = 0; i < tbl.Rows.length; i++) {
tblHtml += " <tr>";
for(var j = 0; j < tbl.Columns.length; j++) {
tblHtml += " <td>" + tbl.Rows[i][tbl.Columns[j].Name] + " </td>";
}
tblHtml += " </tr>";
}
tblHtml += " </table>";
var divPro = document.getElementById("divPro");
divPro.innerHTML = tblHtml;
}
AjaxProSample.GetProductSet(cb);
}
</script>
[/code]
C# code
// .aspx.cs
[AjaxPro.AjaxNamespace("AjaxProSample")]
public partial class AjaxPro_ReturnDataSet : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
AjaxPro.Utility.RegisterTypeForAjax(typeof(AjaxPro_ReturnDataSet));
}
[AjaxPro.AjaxMethod]
public static DataSet GetProductSet()
{
return CreateSampleProductSet();
}
sample data#region sample data
static DataSet CreateSampleProductSet()
{
DataSet ds = new DataSet();
ds.Tables.Add(CreateSampleProductData());
return ds;
}
static DataTable CreateSampleProductData()
{
DataTable tbl = new DataTable("Products");
tbl.Columns.Add("ProductID", typeof(int));
tbl.Columns.Add("ProductName", typeof(string));
tbl.Columns.Add("UnitPrice", typeof(decimal));
tbl.Columns.Add("CategoryID", typeof(int));
tbl.Rows.Add(1, "Chai", 18, 1);
tbl.Rows.Add(2, "Chang", 19, 1);
tbl.Rows.Add(3, "Aniseed Syrup", 10, 2);
tbl.Rows.Add(4, "Chef Anton's Cajun Seasoning", 22, 2);
tbl.Rows.Add(5, "Chef Anton's Gumbo Mix", 21.35, 2);
tbl.Rows.Add(47, "Zaanse koeken", 9.5, 3);
tbl.Rows.Add(48, "Chocolade", 12.75, 3);
tbl.Rows.Add(49, "Maxilaku", 20, 3);
return tbl;
}
#endregion
}
AjaxPro 支持直接返回 DataTable 和 DataView ,客户端读取方式同 DataSet
var tbl = res.value; // 直接访问 DataTable
需要注意的是,返回 DataView,实际上是返回 DataView 关联的 DataTable 。