一 : 用Javascript刷新框架子页面的七种方法
下面以三个页面分别命名为framedemo.html,top.html,button.html为例来具体说明如何做。
其中framedemo.html由上下两个页面组成,代码如下:
以下为引用的内容: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> |
现在假设top.html即上面的页面有一个button来实现对下面页面的刷新,可以用以下七种语句,哪个好用自己看着办了。
语句1. window.parent.frames[1].location.reload();
语句2. window.parent.frames.bottom.location.reload();
语句3. window.parent.frames["bottom"].location.reload();
语句4. window.parent.frames.item(1).location.reload();
语句5. window.parent.frames.item('bottom').location.reload();
语句6. window.parent.bottom.location.reload();
语句7. window.parent['bottom'].location.reload();
解释一下:
1.window指代的是当前页面,例如对于此例它指的是top.html页面。
2.parent指的是当前页面的父页面,也就是包含它的框架页面。例如对于此例它指的是framedemo.html。
3.frames是window对象,是一个数组。代表着该框架内所有子页面。
4.item是方法。返回数组里面的元素。
5.如果子页面也是个框架页面,里面还是其它的子页面,那么上面的有些方法可能不行。
top.html源代码;(页面上有七个按钮,功能都是刷新下面的框架页面)
以下为引用的内容: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> |
下面是bottom.html页面源代码,为了证明下方页面的确被刷新了,在装载完页面弹出一个对话框。
以下为引用的内容: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> |
二 : 网页中的框架应用详解
框架标记<frameset>???三 : 超链接与框架网页及应用
网页是组成网站的重要部分,在网页中,经常会添加信息网站的超链接,那么,超链接与框架网页及应用是怎样设置的呢?
(一)创建网页的超链接
1.打开要加入链接的网页
新建一个站点,将素材复制到相关文件夹中。
选取文件菜单→选取打开选项→选取范例文件sample3-1.htm→点击打开按钮
2.制作到网站的链接
选择要添加链接的文本→选取链接文本方块→输入链接的网站地址
3.制作到自己网站中网页的链接
选择要添加链接文本→点击浏览文件按钮→选取要链接的网页d1.htm→点击确定按钮
4.制作到图片的链接
选择要添加链接的文本→点击浏览文件按钮→选取要链接的图片p1.jpg→点击确定按钮
5.制作到word文档的链接
选取添加链接的文本→点击浏览文件按钮→双击word文件夹→选择要链接的文件(word文档)→点击确定按钮→选取目标框→选取_blank项目(在新窗口打开)
6.制作到flash动画的链接
选取添加链接的文本→点击浏览文件按钮→选取要链接的flash文件MK.SWF→点击确定按钮
7.制作到声音文件的链接
选取添加链接的文本→点击浏览文件按钮→选取要链接的声音文件py.mp3→点击确定按钮
8.制作到程序文件的链接
选取要添加链接的文本→点击浏览按钮→选取要链接的程序kitty.exe→点击确定按钮
9.制作缩略图到大图的链接
点击要添加链接的图片→点击浏览文件按钮→选取要链接的图片MONKEY.GIF→点击确定按钮→选取链接目标选择框→选取_blank(在新窗口打开)
(二)制作锚点链接
1.插入第一个锚点
打开要编辑的网页article.htm→将插入点置于要插入锚点的位置→点击插入锚点按钮→输入锚点名1(不能是汉字或全角字符)→点击“确定”按钮
2.插入其它锚点
拖动滚动条至下一个要插入锚点处→将插入点置于要插入锚点处→按下插入锚点按钮→输入锚点名2→点击“确定
重复以上步骤,插入所有锚点名。
3.链接到锚点(方法一)
选择要链接至锚点的网页元素→选择链接框,输入锚点名#1→点击enter键→链接完成
4.链接到锚点(方法二)
选择要链接的网页元素→将指向箭头拖向要链接的锚点处→链接完成
重复以上步骤,完成所有链接
5.制作返回页首的锚点链接
将插入点移到网页开头处→点击插入锚点按钮→输入锚点名top→点击确定→将插入点置于要插入链接的位置→输入链接文本(也可插入图象)→选中链接的文本→输入链接的锚点#top
6.复制返回页首的锚点链接
选中锚点→选择编辑菜单中的拷贝选项→拖动滚动条→将插入点置于要插入链接的位置→选择编辑菜单中的粘贴选项→将链接粘贴→按f12键预览
(三)制作电子邮件链接
1.打开插入email链接对话框
打开要编辑的网页email.htm→选取插入菜单→选取电子邮件链接选项
2.输入email地址
选取email文本框→输入邮件链接显示文本→点击确定按钮→输入email地址→点击确定按钮
3.将Email链接复制到图象的链接框
选择邮件链接框的链接地址→用鼠标右键单击→选取复制选项→选取要添加邮件链接的图象→用鼠标右键单击链接框→选取粘贴选项
4.预览
按F12键预览→将鼠标移至邮件链接处→单击鼠标→打开邮件窗口→在收件人框显示已建立的的email地址
(四)制作跳转菜单
1)打开设置跳转菜单对话框
在执行此操作之前,请先将网页保存在当前站点中→选取“插入”菜单→选取表单→跳转菜单
2)设置跳转菜单
在文本框输入跳转菜单第一行显示的文本→点击添加按钮→输入菜单栏第2行显示的文本→点击“选择时,转到URL:”框→输入URL地址,此处为绝对地址→点击添加按钮→输入菜单栏第3行显示的文本→点击“选择时转到URL”框的浏览按钮→在当前站点中选择要链接的网页→点击确定按钮
3)删除表单域
用鼠标点中跳转菜单,从红色虚线中拖出→用鼠标右键点击红色虚线框(表单域)→在弹出的菜单中选取删除标签选项→完成后的跳转菜单
4)修改跳转菜单
选取窗口菜单→选取属性选项(勾选属性面板)→选择要修改的跳转菜单→点击属性面板上的“列表值”按钮→打开列表值框进行修改→添加/删除菜单项→改变菜单项的排列顺序→修改完毕点击确定按钮→按F12键预览效果
四 : iBatis for net 框架使用
简介:ibatis 一词来源于“internet”和“abatis”的组合,是一个由Clinton Begin在2001年发起的开放源代码项目,到后面发展的版本叫MyBatis但都是指的同一个东西。(www.61k.com]最初侧重于密码软件的开发,现在是一个基于Java的持久层框架,渐渐的也把这种模式转移到了net。相对NHibernate等“一站式”ORM解决方案而言,ibatis 是一种“半自动化”的ORM实现。
下载地址:
第一步:创建数据库与新建网站项目。
创建数据库与表的T-sql:
/*
* iBatisDemo Sql
* Stone (QQ:1370569)
* Date:2011.09.26
*/
create database OrmDB
go
use OrmDB
go
create table People
(
id int primary key identity,
[name] varchar(250),
age int
)
go
打开vs开发工具,新建网站项目。
第二步:为网站添加iBatis框架支持。
为网站添加引用或者直接把下载的iBatis框架中的IBatisNet.Common.dll和IBatisNet.DataMapper.dll复制到Bin目录下。
第三步:添加iBatis配置文件。
iBatis的配置文件只用三种,也必须要有这三种:
1.providers.config[文件名不能修改]此文件为数据库开发商提供的驱动配置集合,是固定不变的,无需修改与配置,复制文件到网站的根目录,代码如下:
providers.config
<?xml version="1.0" encoding="utf-8"?>
<providers
xmlns="http://ibatis.apache.org/providers"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<clear/>
<provider
name="sqlServer1.0"
description="Microsoft SQL Server, provider V1.0.3300.0 in framework .NET V1.0"
enabled="false"
assemblyName="System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" connectionClass="System.Data.SqlClient.SqlConnection"
commandClass="System.Data.SqlClient.SqlCommand"
parameterClass="System.Data.SqlClient.SqlParameter"
parameterDbTypeClass="System.Data.SqlDbType"
parameterDbTypeProperty="SqlDbType"
dataAdapterClass="System.Data.SqlClient.SqlDataAdapter"
commandBuilderClass="System.Data.SqlClient.SqlCommandBuilder"
usePositionalParameters="false"
useParameterPrefixInSql="true"
useParameterPrefixInParameter="true"
parameterPrefix="@"
allowMARS="false"
/>
<provider
name="sqlServer1.1"
description="Microsoft SQL Server, provider V1.0.5000.0 in framework .NET V1.1"
enabled="false"
assemblyName="System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
connectionClass="System.Data.SqlClient.SqlConnection"
commandClass="System.Data.SqlClient.SqlCommand"
parameterClass="System.Data.SqlClient.SqlParameter"
parameterDbTypeClass="System.Data.SqlDbType"
parameterDbTypeProperty="SqlDbType"
dataAdapterClass="System.Data.SqlClient.SqlDataAdapter"
commandBuilderClass="System.Data.SqlClient.SqlCommandBuilder"
usePositionalParameters="false"
useParameterPrefixInSql="true"
useParameterPrefixInParameter="true"
parameterPrefix="@"
allowMARS="false"
/>
<provider
name="sqlServer2.0"
enabled="true"
description="Microsoft SQL Server, provider V2.0.0.0 in framework .NET V2.0"
assemblyName="System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
connectionClass="System.Data.SqlClient.SqlConnection"
commandClass="System.Data.SqlClient.SqlCommand"
parameterClass="System.Data.SqlClient.SqlParameter"
parameterDbTypeClass="System.Data.SqlDbType"
parameterDbTypeProperty="SqlDbType"
dataAdapterClass="System.Data.SqlClient.SqlDataAdapter"
commandBuilderClass=" System.Data.SqlClient.SqlCommandBuilder"
usePositionalParameters = "false"
useParameterPrefixInSql = "true"
useParameterPrefixInParameter = "true"
parameterPrefix="@"
allowMARS="false"
/>
<provider
name="sqlServer2005"
enabled="false"
description="Microsoft SQL Server, provider V2.0.0.0 in framework .NET V2.0"
assemblyName="System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
connectionClass="System.Data.SqlClient.SqlConnection"
commandClass="System.Data.SqlClient.SqlCommand"
parameterClass="System.Data.SqlClient.SqlParameter"
parameterDbTypeClass="System.Data.SqlDbType"
parameterDbTypeProperty="SqlDbType"
dataAdapterClass="System.Data.SqlClient.SqlDataAdapter"
commandBuilderClass=" System.Data.SqlClient.SqlCommandBuilder"
usePositionalParameters = "false"
useParameterPrefixInSql = "true"
useParameterPrefixInParameter = "true"
parameterPrefix="@"
allowMARS="true"
/>
<provider name="OleDb1.1"
description="OleDb, provider V1.0.5000.0 in framework .NET V1.1"
enabled="false"
assemblyName="System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
connectionClass="System.Data.OleDb.OleDbConnection"
commandClass="System.Data.OleDb.OleDbCommand"
parameterClass="System.Data.OleDb.OleDbParameter"
parameterDbTypeClass="System.Data.OleDb.OleDbType"
parameterDbTypeProperty="OleDbType"
dataAdapterClass="System.Data.OleDb.OleDbDataAdapter"
commandBuilderClass="System.Data.OleDb.OleDbCommandBuilder"
usePositionalParameters="true"
useParameterPrefixInSql="false"
useParameterPrefixInParameter="false"
parameterPrefix=""
allowMARS="false"
/>
<provider name="OleDb2.0"
description="OleDb, provider V2.0.0.0 in framework .NET V2"
enabled="false"
assemblyName="System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
connectionClass="System.Data.OleDb.OleDbConnection"
commandClass="System.Data.OleDb.OleDbCommand"
parameterClass="System.Data.OleDb.OleDbParameter"
parameterDbTypeClass="System.Data.OleDb.OleDbType"
parameterDbTypeProperty="OleDbType"
dataAdapterClass="System.Data.OleDb.OleDbDataAdapter"
commandBuilderClass="System.Data.OleDb.OleDbCommandBuilder"
usePositionalParameters="true"
useParameterPrefixInSql="false"
useParameterPrefixInParameter="false"
parameterPrefix=""
allowMARS="false"
/>
<provider
name="Odbc1.1"
description="Odbc, provider V1.0.5000.0 in framework .NET V1.1"
enabled="false"
assemblyName="System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
connectionClass="System.Data.Odbc.OdbcConnection"
commandClass="System.Data.Odbc.OdbcCommand"
parameterClass="System.Data.Odbc.OdbcParameter"
parameterDbTypeClass="System.Data.Odbc.OdbcType"
parameterDbTypeProperty="OdbcType"
dataAdapterClass="System.Data.Odbc.OdbcDataAdapter"
commandBuilderClass="System.Data.Odbc.OdbcCommandBuilder"
usePositionalParameters="true"
useParameterPrefixInSql="false"
useParameterPrefixInParameter="false"
parameterPrefix="@"
allowMARS="false"
/>
<provider
name="Odbc2.0"
description="Odbc, provider V2.0.0.0 in framework .NET V2"
enabled="false"
assemblyName="System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
connectionClass="System.Data.Odbc.OdbcConnection"
commandClass="System.Data.Odbc.OdbcCommand"
parameterClass="System.Data.Odbc.OdbcParameter"
parameterDbTypeClass="System.Data.Odbc.OdbcType"
parameterDbTypeProperty="OdbcType"
dataAdapterClass="System.Data.Odbc.OdbcDataAdapter"
commandBuilderClass="System.Data.Odbc.OdbcCommandBuilder"
usePositionalParameters="true"
useParameterPrefixInSql="false"
useParameterPrefixInParameter="false"
parameterPrefix="@"
allowMARS="false"
/>
<provider
name="oracle9.2"
description="Oracle, Oracle provider V9.2.0.401"
enabled="false"
assemblyName="Oracle.DataAccess, Version=9.2.0.401, Culture=neutral, PublicKeyToken=89b483f429c47342" connectionClass="Oracle.DataAccess.Client.OracleConnection"
commandClass="Oracle.DataAccess.Client.OracleCommand"
parameterClass="Oracle.DataAccess.Client.OracleParameter"
parameterDbTypeClass="Oracle.DataAccess.Client.OracleDbType"
parameterDbTypeProperty="OracleDbType"
dataAdapterClass="Oracle.DataAccess.Client.OracleDataAdapter"
commandBuilderClass="Oracle.DataAccess.Client.OracleCommandBuilder"
usePositionalParameters="false"
useParameterPrefixInSql="true"
useParameterPrefixInParameter="false"
parameterPrefix=":"
useDeriveParameters="false"
allowMARS="false"
/>
<provider
name="oracle10.1"
description="Oracle, oracle provider V10.1.0.301"
enabled="false"
assemblyName="Oracle.DataAccess, Version=10.1.0.301, Culture=neutral, PublicKeyToken=89b483f429c47342" connectionClass="Oracle.DataAccess.Client.OracleConnection"
commandClass="Oracle.DataAccess.Client.OracleCommand"
parameterClass="Oracle.DataAccess.Client.OracleParameter"
parameterDbTypeClass="Oracle.DataAccess.Client.OracleDbType"
parameterDbTypeProperty="OracleDbType"
dataAdapterClass="Oracle.DataAccess.Client.OracleDataAdapter"
commandBuilderClass="Oracle.DataAccess.Client.OracleCommandBuilder"
usePositionalParameters="true"
useParameterPrefixInSql="true"
useParameterPrefixInParameter="true"
parameterPrefix=":"
useDeriveParameters="false"
allowMARS="false"
/>
<provider
name="oracleClient1.0"
description="Oracle, Microsoft provider V1.0.5000.0"
enabled="false"
assemblyName="System.Data.OracleClient, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" connectionClass="System.Data.OracleClient.OracleConnection"
commandClass="System.Data.OracleClient.OracleCommand"
parameterClass="System.Data.OracleClient.OracleParameter"
parameterDbTypeClass="System.Data.OracleClient.OracleType"
parameterDbTypeProperty="OracleType"
dataAdapterClass="System.Data.OracleClient.OracleDataAdapter"
commandBuilderClass="System.Data.OracleClient.OracleCommandBuilder"
usePositionalParameters="false"
useParameterPrefixInSql="true"
useParameterPrefixInParameter="false"
parameterPrefix=":"
allowMARS="false"
/>
<provider
name="ByteFx"
description="MySQL, ByteFx provider V0.7.6.15073"
enabled="false"
assemblyName="ByteFX.MySqlClient, Version=0.7.6.15073, Culture=neutral, PublicKeyToken=f2fef6fed1732fc1" connectionClass="ByteFX.Data.MySqlClient.MySqlConnection"
commandClass="ByteFX.Data.MySqlClient.MySqlCommand"
parameterClass="ByteFX.Data.MySqlClient.MySqlParameter"
parameterDbTypeClass="ByteFX.Data.MySqlClient.MySqlDbType"
parameterDbTypeProperty="MySqlDbType"
dataAdapterClass="ByteFX.Data.MySqlClient.MySqlDataAdapter"
commandBuilderClass="ByteFX.Data.MySqlClient.MySqlCommandBuilder"
usePositionalParameters="false"
useParameterPrefixInSql="true"
useParameterPrefixInParameter="true"
parameterPrefix="@"
allowMARS="false"
/>
<provider
name="MySql"
description="MySQL, MySQL provider 1.0.7.30072"
enabled="false"
assemblyName="MySql.Data, Version=1.0.7.30072, Culture=neutral, PublicKeyToken=c5687fc88969c44d" connectionClass="MySql.Data.MySqlClient.MySqlConnection"
commandClass="MySql.Data.MySqlClient.MySqlCommand"
parameterClass="MySql.Data.MySqlClient.MySqlParameter"
parameterDbTypeClass="MySql.Data.MySqlClient.MySqlDbType"
parameterDbTypeProperty="MySqlDbType"
dataAdapterClass="MySql.Data.MySqlClient.MySqlDataAdapter"
commandBuilderClass="MySql.Data.MySqlClient.MySqlCommandBuilder"
usePositionalParameters="false"
useParameterPrefixInSql="true"
useParameterPrefixInParameter="true"
parameterPrefix="?"
allowMARS="false"
/>
<provider name="SQLite3 Finisar"
description="SQLite, SQLite.NET provider V0.21.1869.3794"
enabled="false"
assemblyName="SQLite.NET, Version=0.21.1869.3794, Culture=neutral, PublicKeyToken=c273bd375e695f9c"
connectionClass="Finisar.SQLite.SQLiteConnection"
commandClass="Finisar.SQLite.SQLiteCommand"
parameterClass="Finisar.SQLite.SQLiteParameter"
parameterDbTypeClass="System.Data.DbType, System.Data"
parameterDbTypeProperty="DbType"
dataAdapterClass="Finisar.SQLite.SQLiteDataAdapter"
commandBuilderClass="Finisar.SQLite.SQLiteCommandBuilder"
usePositionalParameters="false"
useParameterPrefixInSql="true"
useParameterPrefixInParameter="true"
parameterPrefix="@"
setDbParameterPrecision="false"
setDbParameterScale="false"
allowMARS="false"
/>
<provider name="SQLite3"
description="SQLite, SQLite.NET provider V1.0.43.0"
enabled="false"
assemblyName="System.Data.SQLite, Version=1.0.43.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"
connectionClass="System.Data.SQLite.SQLiteConnection"
commandClass="System.Data.SQLite.SQLiteCommand"
parameterClass="System.Data.SQLite.SQLiteParameter"
parameterDbTypeClass="System.Data.SQLite.SQLiteType"
parameterDbTypeProperty="DbType"
dataAdapterClass="System.Data.SQLite.SQLiteDataAdapter"
commandBuilderClass="System.Data.SQLite.SQLiteCommandBuilder"
usePositionalParameters="false"
useParameterPrefixInSql="true"
useParameterPrefixInParameter="true"
parameterPrefix="@"
setDbParameterPrecision="false"
setDbParameterScale="false"
allowMARS="false"
/>
<provider
name="Firebird1.7"
description="Firebird, Firebird SQL .NET provider V1.7.0.33200"
enabled="false"
assemblyName="FirebirdSql.Data.Firebird, Version=1.7.0.33200, Culture=neutral, PublicKeyToken=fa843d180294369d" connectionClass="FirebirdSql.Data.Firebird.FbConnection"
commandClass="FirebirdSql.Data.Firebird.FbCommand"
parameterClass="FirebirdSql.Data.Firebird.FbParameter"
parameterDbTypeClass="FirebirdSql.Data.Firebird.FbDbType"
parameterDbTypeProperty="FbDbType"
dataAdapterClass="FirebirdSql.Data.Firebird.FbDataAdapter"
commandBuilderClass="FirebirdSql.Data.Firebird.FbCommandBuilder"
usePositionalParameters="false"
useParameterPrefixInSql="true"
useParameterPrefixInParameter="true"
parameterPrefix="@"
allowMARS="false"
/>
<provider
name="PostgreSql0.99.1.0"
description="PostgreSql, Npgsql provider V0.99.1.0"
enabled="false"
assemblyName="Npgsql, Version=0.99.1.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7"
connectionClass="Npgsql.NpgsqlConnection"
commandClass="Npgsql.NpgsqlCommand"
parameterClass="Npgsql.NpgsqlParameter"
parameterDbTypeClass="NpgsqlTypes.NpgsqlDbType"
parameterDbTypeProperty="NpgsqlDbType"
dataAdapterClass="Npgsql.NpgsqlDataAdapter"
commandBuilderClass="Npgsql.NpgsqlCommandBuilder"
usePositionalParameters="false"
useParameterPrefixInSql="true"
useParameterPrefixInParameter="true"
parameterPrefix=":"
allowMARS="true"
/>
<provider
name="iDb2.10"
description="IBM DB2 Provider, V 10.0"
enabled="false"
assemblyName="IBM.Data.DB2.iSeries, Version=10.0.0.0,Culture=neutral, PublicKeyToken=9cdb2ebfb1f93a26, Custom=null" connectionClass="IBM.Data.DB2.iSeries.iDB2Connection"
commandClass="IBM.Data.DB2.iSeries.iDB2Command"
parameterClass="IBM.Data.DB2.iSeries.iDB2Parameter"
parameterDbTypeClass="IBM.Data.DB2.iSeries.iDB2DbType"
parameterDbTypeProperty="iDB2DbType"
dataAdapterClass="IBM.Data.DB2.iSeries.iDB2DataAdapter"
commandBuilderClass="IBM.Data.DB2.iSeries.iDB2CommandBuilder"
usePositionalParameters="true"
useParameterPrefixInSql="false"
useParameterPrefixInParameter="false"
parameterPrefix=""
allowMARS="false"
/>
<provider
name="Informix"
description="Informix NET Provider, 2.81.0.0"
enabled="false"
assemblyName="IBM.Data.Informix, Version=2.81.0.0, Culture=neutral, PublicKeyToken=7c307b91aa13d208"
connectionClass="IBM.Data.Informix.IfxConnection"
commandClass="IBM.Data.Informix.IfxCommand"
parameterClass="IBM.Data.Informix.IfxParameter"
parameterDbTypeClass="IBM.Data.Informix.IfxType"
parameterDbTypeProperty="IfxType"
dataAdapterClass="IBM.Data.Informix.IfxDataAdapter"
commandBuilderClass="IBM.Data.Informix.IfxCommandBuilder"
usePositionalParameters = "true"
useParameterPrefixInSql = "false"
useParameterPrefixInParameter = "false"
useDeriveParameters="false"
allowMARS="false"
/>
</providers>
2.SQLMap.config[文件名不可修改],配置连接数据库字符串与每个实体类(表)的映射文件配置,复制文件到网站的根目录,代码如下:
<?xml version="1.0" encoding="utf-8"?>
<sqlMapConfig
xmlns="http://ibatis.apache.org/dataMapper"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<settings>
<!--/是否使用Satement命名空间,这里的命名空间指的是映射文件中sqlMap节点的namespace属性,默认是false-->
<setting useStatementNamespaces="false"/>
<!--是否启用DataMapper的缓存机制,针对全部的SqlMap,默认是true-->
<setting cacheModelsEnabled="true"/>
<!--是否启用SqlMapConfig.xsd schema验证映射文件,默认是false-->
<setting validateSqlMap="false"/>
</settings>
<!--配置数据驱动提供类配置文件的路径和文件名-->
<providers resource="providers.config"/>
<!--如果在providers.config文件中指定了默认的数据库驱动,那么provider节点就不需要设置了,它的作用是在换数据库驱动时不需要修改providers.config文件。datasource节点用于指定ADO.NET Connection String.-->
<database>
<provider name="sqlServer2.0"/>
<dataSource name="mydb" connectionString="data source=127.0.0.1;database=MyBatisDB;user id=sa;password=sa;"/>
</database>
<!--指定映射的文件的位置-->
<sqlMaps>
<sqlMap resource="Maps/PeopleMap.xml"/>
</sqlMaps>
</sqlMapConfig>
3.每个实体类(表)都有一个单独的配置文件类,类型为xml。代码生成器也是生成这个类的,这样一来,用户就可以几秒钟创建开发一个iBatis项目了,实体类的配置文件格式如下,在网站的根目录创建一个Map的文件夹,新建xxxMap.xml格式的配置类,比如:PeopleMap.xml文件,示例代码如下:
<?xml version="1.0" encoding="utf-8" ?>
<!--namespace必须用否者就报错(读取配置文件报:未将对象引用设置到对象的实例)-->
<sqlMap namespace="" xmlns="http://ibatis.apache.org/mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<statements>
<select id="GetPeopleById" parameterClass="string" resultClass="HashTable">
SELECT * FROM People WHERE Id=#Id#
</select>
<insert id="Add" parameterClass="hashtable">
INSERT dbo.People (name ,age)
VALUES (#Name# , #Age#)
</insert>
<delete id="Delete" parameterClass="int" restultClass="int">
DELETE FROM dbo.People WHERE Id=#Id#
</delete>
<update id="Update" parameterClass="hashtable" restltClass="int">
UPDATE People SET name=#Name# WHERE Id=#Id#
</update>
<select id="GetAll" resultClass="HashTable">
SELECT * FROM People
</select>
</statements>
</sqlMap>
这三类配置文件必须都要有,与其他orm框架不同的是,web.config什么也不用配置,及时练数据库连接字符串也不是在它的文件中配置的,也就是web.config是没有被用到的。
第四步:iBatis框架语法与使用。
使用之前先来加入一个DB辅助类IBatisHepler.cs,代码如下:
IBatisHepler.cs
using System;
using System.Collections.Generic;
using System.Text;
using IBatisNet.DataMapper.Configuration.Statements;
using IBatisNet.DataMapper;
using IBatisNet.DataMapper.MappedStatements;
using IBatisNet.Common;
using IBatisNet.DataMapper.Scope;
using System.Data;
using IBatisNet.DataMapper.Configuration;
using System.Collections;
/// <summary>
/// IBatis 使用工具类
/// </summary>
public class IBatisHepler
{
private static ISqlMapper mapper = null;
static IBatisHepler()
{
DomSqlMapBuilder builder = new DomSqlMapBuilder();//其作用是根据配置文件创建SqlMap实例。
mapper = builder.Configure("SqlMap.config") as SqlMapper;//SqlMapper是iBatisNet的核心组件,提供数据库操作的基础平台。SqlMapper可通过DomSqlMapBuilder创建。
}
/// <summary>
/// 执行添加操作
/// </summary>
/// <param name="tag">语句ID</param>
/// <param name="paramObject">语句所需要的参数</param>
/// <returns>添加的主键</returns>
public static object ExcuteInsert(string tag, Hashtable paramObject)
{
return mapper.Insert(tag, paramObject);
}
/// <summary>
/// 执行删除操作
/// </summary>
/// <param name="tag">语句ID</param>
/// <param name="paramObject">语句所需要的参数</param>
/// <returns>影响行数</returns>
public static int ExcuteDelete(string tag, object paramObject)
{
return mapper.Delete(tag, paramObject);
}
/// <summary>
/// 执行修改操作
/// </summary>
/// <param name="tag">语句ID</param>
/// <param name="paramObject">语句所需要的参数</param>
/// <returns>影响行数</returns>
public static int ExcuteUpdate(string tag, Hashtable paramObject)
{
return mapper.Update(tag, paramObject);
}
/// <summary>
/// 查询单个实体对象
/// </summary>
/// <param name="tag">语句ID</param>
/// <param name="paramObject">语句所需要的参数</param>
/// <returns>得到的Object</returns>
public static object ExcuteSelectObj(string tag, object paramObject)
{
object obj = mapper.QueryForObject(tag, paramObject);
return obj;
}
/// <summary>
/// 分页查询
/// </summary>
/// <param name="tag">语句ID</param>
/// <param name="paramObject">语句所需要的参数</param>
/// <param name="pageIndex">页索引</param>
/// <param name="pageSize">每页显示的记录数</param>
/// <returns>得到的List集合</returns>
public static IList ExcuteSelect(string tag, object paramObject, int pageIndex, int pageSize)
{
return mapper.QueryForList(tag, paramObject, pageIndex, pageSize);
}
/// <summary>
/// 通用的以DataTable的方式得到Select的结果(xml文件中参数要使用$标记的占位参数)
/// </summary>
/// <param name="tag">语句ID</param>
/// <param name="paramObject">语句所需要的参数</param>
/// <returns>得到的DataTable</returns>
public static DataTable ExcuteSelect(string tag, object paramObject)
{
DataSet ds = new DataSet();
bool isSessionLocal = false;
ISqlMapSession session = mapper.LocalSession;
if (session == null)
{
session = mapper.CreateSqlMapSession();
session.OpenConnection();
isSessionLocal = true;
}
try
{
IDbCommand cmd = session.CreateCommand(CommandType.Text);
cmd.Connection = session.Connection;
cmd.CommandText = GetSql(tag, paramObject);
IDbDataAdapter adapter = session.CreateDataAdapter(cmd);
adapter.Fill(ds);
}
finally
{
if (isSessionLocal)
{
session.CloseConnection();
}
}
return ds.Tables[0];
}
/// <summary>
/// 得到参数化后的SQL
/// </summary>
/// <param name="tag">语句ID</param>
/// <param name="paramObject">语句所需要的参数</param>
/// <returns>sql语句</returns>
protected static string GetSql(string tag, object paramObject)
{
IStatement statement = mapper.GetMappedStatement(tag).Statement;
IMappedStatement mapStatement = mapper.GetMappedStatement(tag);
ISqlMapSession session = mapper.CreateSqlMapSession();
RequestScope request = statement.Sql.GetRequestScope(mapStatement, paramObject, session);
return request.PreparedStatement.PreparedSql;
}
/// <summary>
/// 用于分页控件使用
/// </summary>
/// <param name="tag">语句ID</param>
/// <param name="paramObject">语句所需要的参数</param>
/// <param name="PageSize">每页显示数目</param>
/// <param name="curPage">当前页</param>
/// <param name="recCount">记录总数</param>
/// <returns>得到的DataTable</returns>
public static DataTable ExcuteSelect(string tag, object paramObject, int PageSize, int curPage, out int recCount)
{
IDataReader dr = null;
bool isSessionLocal = false;
string sql = GetSql(tag, paramObject);
string strCount = "select count(*) " + sql.Substring(sql.ToLower().IndexOf("from"));
IDalSession session = mapper.LocalSession;
DataTable dt = new DataTable();
if (session == null)
{
session = mapper.CreateSqlMapSession();
session.OpenConnection();
isSessionLocal = true;
}
try
{
IDbCommand cmdCount = session.CreateCommand(CommandType.Text);
cmdCount.Connection = session.Connection;
cmdCount.CommandText = strCount;
object count = cmdCount.ExecuteScalar();
recCount = Convert.ToInt32(count);
IDbCommand cmd = session.CreateCommand(CommandType.Text);
cmd.Connection = session.Connection;
cmd.CommandText = sql;
dr = cmd.ExecuteReader();
dt = Paging(dr, PageSize, curPage);
}
finally
{
if (isSessionLocal)
{
session.CloseConnection();
}
}
return dt;
}
/**/
/// <summary>
/// 取回合适数量的数据
/// </summary>
/// <param name="dataReader"></param>
/// <param name="PageSize"></param>
/// <param name="curPage"></param>
/// <returns></returns>
protected static DataTable Paging(IDataReader dataReader, int PageSize, int curPage)
{
DataTable dt;
dt = new DataTable();
int colCount = dataReader.FieldCount;
for (int i = 0; i < colCount; i++)
{
dt.Columns.Add(new DataColumn(dataReader.GetName(i), dataReader.GetFieldType(i)));
}
// 读取数据。将DataReader中的数据读取到DataTable中
object[] vald = new object[colCount];
int iCount = 0; // 临时记录变量
while (dataReader.Read())
{
// 当前记录在当前页记录范围内
if (iCount >= PageSize * (curPage - 1) && iCount < PageSize * curPage)
{
for (int i = 0; i < colCount; i++)
vald[i] = dataReader.GetValue(i);
dt.Rows.Add(vald);
}
else if (iCount > PageSize * curPage)
{
break;
}
iCount++; // 临时记录变量递增
}
if (!dataReader.IsClosed)
{
dataReader.Close();
dataReader.Dispose();
}
return dt;
}
}
使用语法如下:
// 添加引用
using System.Collections;
using IBatisNet.DataMapper;
using IBatisNet.DataMapper.Configuration;
// 1.添加
Hashtable ht_add = new Hashtable();
ht_add["Name"] = "IBatis"; // [注意]大小写要和xxxMap.xml里保持一致
ht_add["Age"] = 2001;
IBatisHepler.ExcuteInsert("Add", ht_add);
// 2.修改
Hashtable ht_up = new Hashtable();
ht_up["Id"] = "1";
ht_up["Name"] = "IBatis";
ht_up["Age"] = 2001;
IBatisHepler.ExcuteUpdate("Update", ht_up);
// 3.删除
IBatisHepler.ExcuteDelete("Delete", 14);
// 4.查询
Repeater1.DataSource = IBatisHepler.ExcuteSelectObj("GetPeopleById", "1");
Repeater1.DataBind();
我对此框架的评价:配置文件有点多,用户需要去写东西比较多,调用查询不是很好用,尤其是条件查询很不方便。
代码下载:【①.本Demo下载】
Orm框架相关文章链接:
1.NHibernate使用之详细图解
2.iBatis for net 框架使用
3.iBatis for Net 代码生成器(CodeHelper)附下载地址
4.NBear简介与使用图解
5.SubSonic框架使用图解
6.GentleNet使用之详细图解
五 : 使用框架结构的网页SEO技巧
框架网页的确有着导航方便、设计便捷的好处。但是问题在于,由于在框架网页中,搜索引擎蜘蛛看到的只有一个页面,那就是框架页,因此,在这样的网页里,搜索引擎势必无法索引到更多的内容。因此,在这里强烈建议避免使用框架网页。从下面的代码,我们就可以知道为什么说搜索引擎只能看到一个页面了。
<framesetrows="80,*"cols="*"frameborder="no"border="0"framespacing="0"> <framesrc="top.html"mce_src="top.html"name="topFrame"scrolling="No"noresize="noresize"id="topFrame"/> <framesetcols="80,*"frameborder="no"border="0"framespacing="0"> <framesrc="left.html"mce_src="left.html"name="leftFrame"scrolling="No"noresize="noresize"id="leftFrame"/> <framesrc="main.html"mce_src="main.html"name="mainFrame"id="mainFrame"/> </frameset> </frameset> |
我们可以看到,我们的导航部分大部分是集中在top.html和left.html,内容全部显示在main.html中,如此一来,搜索引擎看到的内容,永远是上面的几行代码。
那么如果非要使用框架网页的时候,该如何去SEO优化呢?
我们知道,在框架网页中有一个"noframes"的标签,也就是说,如果没有框架显示功能的话怎么版,因此,我们就可以合理的利用这一部分。完整的代码如下:
<framesetrows="80,*"cols="*"frameborder="no"border="0"framespacing="0"> <framesrc="top.html"mce_src="top.html"name="topFrame"scrolling="No"noresize="noresize"id="topFrame"/> <framesetcols="80,*"frameborder="no"border="0"framespacing="0"> <framesrc="left.html"mce_src="left.html"name="leftFrame"scrolling="No"noresize="noresize"id="leftFrame"/> <framesrc="main.html"mce_src="main.html"name="mainFrame"id="mainFrame"/> </frameset> </frameset> <noframes><body>浏览器不支持框架,点击这里查看<ahref="sitemap.html"mce_href="sitemap.html">网站所有内容(网站地图)</a> </body> </noframes> |
61阅读| 精彩专题| 最新文章| 热门文章| 苏ICP备13036349号-1