Archive for 十一月, 2009

秋冬养生 泡脚泡出你的精气神

泡脚是比较有讲究的,大家千万不要以为泡脚就是拿个盆子倒上些热水就算泡脚了,泡脚要泡到出汗身体出汗的,30分钟不出汗还要加中药。水要不断的加热才行。见下面的文章。
秋冬养生 泡j脚泡出你的精气神

Tags:

冬季养生菜

羊肉萝卜汤
羊肉500克切块,萝卜500克切块,草果两个(去皮),甘草3克,生姜5片,同放锅内煮汤,汤煲好后加少量食盐调味食用。有补中健胃,益肾壮阳作用。适用于病后体虚,腰疼怕冷,食欲不振等症。

枸杞炖羊肉
  羊肉1斤,先放入沸水中煮透,捞出切成小方块,与生姜片一起倒入热油锅内煸炒,放入料酒,然后倒入砂锅内,放入枸杞20克,清汤2斤,香葱、食盐适量,用小火炖烂。最后加味精调味食用。

羊肉粥
  取鲜羊肉100克,粳米100克,盐、葱、姜适量。羊肉洗净切片,葱、姜切成碎块备用。将粳米淘洗干净,同羊肉及调味品一同放入锅内,加清水适量,先用大火煮沸,再用文火熬成粥。本粥具有益气血、暖脾胃、添精补髓的作用,适于阳气不足、气血亏损、腰膝酸软者服用。

橄榄雪梨炖瘦肉
  橄榄15克、雪梨50克、瘦肉100克、蜜枣1个。将瘦肉洗净,沸水略煮后切块,雪梨洗净切片再与洗净的橄榄、蜜枣放入炖盅内加清水250毫升,炖两小时即可。此款菜品利咽生津,滋阴润燥。

姜汁甜牛奶
  取150-200毫升鲜牛奶,加入一调羹生姜汁和少许白糖,放入容器内隔水蒸十五分钟。此款饮品有驱寒合胃之功效,天天饮用一杯,手脚寒气便会渐失。

生煎猪肝
  新鲜猪肝一斤,洗净后,斜刀切成稍大块点的薄片;用盐、料酒、姜丝、胡椒粉、生抽、味精和少许生粉将猪肝腌一下(如喜欢五香味的可放些五香粉);煎锅烧热放少许油,将猪肝摊在锅内煎黄一面后翻另一面;待两面煎黄,放些蒜蓉、葱丝、少许酱油后拌匀,即可出锅装盘。此菜富含维生素A,可缓解因畏寒而产生的腹痛症状。

海带豆腐
  海带结半斤、北豆腐一盒,姜片、葱丝、盐、鸡精适量。海带结洗净备用,豆腐切成3厘米见方的块;加油适量,五成油温时,放入姜片、葱丝爆香;加入豆腐,放盐;约1分钟煎至微黄,翻炒;放入海带,翻炒大约一分钟;加水,漫过主料1厘米,加入鸡精;继续大火烧,大约8分钟,剩少许汤,即可出锅。此菜含钙丰富,利于心肌。

杞精炖鹌鹑
  原料:鹌鹑 1只, 枸杞子、黄精各30克,盐、味精少许。
  制作:将鹌鹑宰杀,去毛及内脏,冼净,枸杞、黄精装鹌鹑腹内,加水适量,文火炖酥,加盐、味精适量调味即成。
  服法:弃药,吃肉喝汤,每日 1次。
  功效:滋养肝肾,补精益智。鹌鹑是良好的益智食品,含有丰富蛋白质、无机盐、维生素等,有助于小儿发育、增进食欲、提高记忆力。脑力劳动者常食,能消除眩晕健忘症状,能提高智力,有健脑养神之作用;枸杞子能补肾益精、养肝明目、抗疲劳、增强体力和智力;黄精能补脾润肺、养阴生津、强化筋骨、益智强身。几味同用更增加其滋补和益智作用。适宜于肝肾不足、精血亏虚而见神疲乏力、腰膝酸软、眩晕健忘者服食。

Tags:

使用EnterpriseLibrary与odp.net开发翻页程序

在上一篇中介绍了如何使用odp.net代替ado.net,不过demo程序是C/S的,今天写一个B/S的,主要是获取翻页存储过程的数据和行数。

首先,在Web.Config中配置数据库连接字串,具体企业库怎么配置连接字串这里就不介绍了。代码如下:

<add name="OracleSource" connectionString="Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.88)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=orcl)));User Id=sys;Password=123;" providerName="Oracle.DataAccess.Client" />

然后,在.cs文件中编写如下代码,代码要注意的地方是存储过程的参数名要与代码中的参数名一致:

        /// <summary>
        /// 获取当前页数据
        /// </summary>
        /// <returns></returns>
        public DataSet GetCurrentDataSet()
        {
            //调用EnterpriseLibrary获取Database对象
            Database db = DatabaseFactory.CreateDatabase("OracleSource");
            //获取OracleCommand
            OracleCommand com = db.GetStoredProcCommand("WP_ALL_PAGINATION") as OracleCommand;
            //表名称
            com.Parameters.Add("TABLENAME_IN", OracleDbType.Varchar2, 50);
            com.Parameters["TABLENAME_IN"].Direction = ParameterDirection.Input;
            com.Parameters["TABLENAME_IN"].Value = tableName;

            //每页显示记录数
            com.Parameters.Add("PAGESIZE_IN", OracleDbType.Int32);
            com.Parameters["PAGESIZE_IN"].Direction = ParameterDirection.Input;
            com.Parameters["PAGESIZE_IN"].Value = PageSize * PageNo;

            //当前页索引值
            com.Parameters.Add("PAGEINDEX_IN", OracleDbType.Int32);
            com.Parameters["PAGEINDEX_IN"].Direction = ParameterDirection.Input;
            com.Parameters["PAGEINDEX_IN"].Value = (PageNo - 1) * PageSize;

            //排序字段
            com.Parameters.Add("ORDERSYNTAX_IN", OracleDbType.Varchar2, 3000);
            com.Parameters["ORDERSYNTAX_IN"].Direction = ParameterDirection.Input;
            com.Parameters["ORDERSYNTAX_IN"].Value = orderBY;

            //Where子句下条件
            com.Parameters.Add("CONDITION_IN", OracleDbType.Varchar2, 3000);
            com.Parameters["CONDITION_IN"].Direction = ParameterDirection.Input;
            com.Parameters["CONDITION_IN"].Value = whereCondition;

            //显示的字段
            com.Parameters.Add("FIELDSNAME_IN", OracleDbType.Varchar2,300);
            com.Parameters["FIELDSNAME_IN"].Direction = ParameterDirection.Input;
            com.Parameters["FIELDSNAME_IN"].Value = showFields;

            //主键
            com.Parameters.Add("ONLYFIELD_IN", OracleDbType.Varchar2, 100);
            com.Parameters["ONLYFIELD_IN"].Direction = ParameterDirection.Input;
            com.Parameters["ONLYFIELD_IN"].Value = guid;

            //返回总记录数
            com.Parameters.Add("COUNT_OUT", OracleDbType.Int32);
            com.Parameters["COUNT_OUT"].Direction = ParameterDirection.InputOutput;
            com.Parameters["COUNT_OUT"].Value = 0;

            //返回记录集
            com.Parameters.Add("cur_out", OracleDbType.RefCursor);
            com.Parameters["cur_out"].Direction = ParameterDirection.Output;
            DataSet ds = db.ExecuteDataSet(com);
            //符合条件的记录总条数
            Count = int.Parse(com.Parameters["COUNT_OUT"].Value.ToString());

            return ds;
        }

Tags:

client使用c#和odp.net连接server oracle

由于微软在.net framework4中会将System.Data.OracleClient.dll deprecated,而且就访问效率和速度而言,System.Data.OracleClient.dll与Oracle.DataAccess.dll相比,微软的确实没有oracle提供的类库有优势,所以我放弃了使用多年的System.Data.OracleClient.dll,取而代之的是odp.net。然而odp.net的优点不止这些,还包括:

1、不在安装客户端也能访问服务器上的oracle(假设Application Server与DB Server 分开)

2、不需要配置TnsNames.Ora文件

当然,我选择odp.net的最主要的原因还是性能。这篇文章列举了两者之间的对比。Technical Comparison: ODP.NET Versus Microsoft OracleClient

Read the rest of this entry »

Tags:

ora-01157 无法标识 锁定数据文件 的解決

ORA-01157: 无法标识/锁定数据文件 7
錯誤提示為:

SQL> startup
ORACLE 例程已经启动。

Total System Global Area  293601280 bytes
Fixed Size                  1290208 bytes
Variable Size             209715232 bytes
Database Buffers           75497472 bytes
Redo Buffers                7098368 bytes
数据库装载完毕。
ORA-01157: 无法标识/锁定数据文件 7 - 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 7: 'D:\TCM52.DBF'

原因:我在數據庫服務停止的時候,將數據文件D:\TCM52.DBF刪除了。
解決方法:

SQL> startup
ORACLE 例程已经启动。

Total System Global Area  293601280 bytes
Fixed Size                  1290208 bytes
Variable Size             213909536 bytes
Database Buffers           71303168 bytes
Redo Buffers                7098368 bytes
数据库装载完毕。
ORA-01157: 无法标识/锁定数据文件 7 - 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 7: 'D:\TCM52.DBF'

SQL> alter database datafile 'd:\TCM52.dbf' offline drop;
数据库已更改。

SQL> alter database open;
数据库已更改。

SQL> drop tablespace TCM52 including contents;
表空间已删除。

SQL> create undo tablespace TCM52 datafile 'E:\oracle\product\10.2.0\oradata\TCM52.dbf' size 2048M extent management local;
表空间已创建。

SQL> alter system set undo_tablespace=TCM52;
系统已更改。

SQL>

Tags:

創建oracle trigger提示ora:01031錯誤的解決辦法

有這樣一個需求:用戶A在表空間ts1下,用戶B在表空間ts2下,要求在用戶B下創建一個trigger,這個trigger的主要功能是修改用戶A中的表。
trigger如下:

create or replace trigger tri_test
  after insert or update or delete on   t_test
  for each row

begin
     if inserting then
  insert into A.t_user(id,title,modifydate)
  values(:new.ID,:new.TITLE,1,sysdate);
     elsif updating then
     update A.t_user t set t.title =:new.CTITLE,t.modifydate=sysdate where t.id=:new.ID;
     elsif deleting then
     update A.t_user t set t.deleted=1,t.modifydate=sysdate where t.id=:new.ID;
     end if;
end ;

但編譯的時候提示:

PL/SQL: ORA-01031: insufficient privileges 權限不足的意思
PL/SQL: SQL Statement ignored

既然提示權限不足,那麼我想一定是用戶B中的trigger對用戶A中的表是無權操作的,終於在google的幫助下,找到了解答,見解決問題的blog
解決方法如下:

grant update on A.t_user  to B
grant insert on A.t_user  to B

這樣就解決了

Tags:

GridView數據源為null時顯示標題列的方法

當GridView的綁定數據源為空時,GridView是不顯示標題列的,用下面的方法可以顯示。
分如下步驟
1、先讓GridView的數據源有數據,也就是在頁面上能夠顯示標題列;
2、打開頁面源文件,並將GridView生成的標題列<tr></td>復制到一個<div></div>中
3、將這個復制到aspx頁面中的指定位置上
4、編寫控制顯示腳本

代碼如下:

 <div id="div_gridViewHeader">
	<table class="Winstar-table">
		<tr><th scope="col">文件名称</th><th scope="col">本库记录</th><th scope="col">接收类型</th><th scope="col">接收时间</th><th scope="col">调入状态</th><th scope='col'>过滤</th><th scope='col'>处理人</th><th scope='col'>操作</th></tr>
	</table>
</div>
<asp:GridView ID="gvList" runat="server" AutoGenerateColumns="False" CssClass="Winstar-table" OnRowDataBound="gvList_RowDataBound">
	<Columns>
		<asp:BoundField DataField="guid" Visible="False" />
		<asp:TemplateField HeaderText="文件名称">
			<ItemTemplate>
					<%# Eval("DOCTITLE") %>
			</ItemTemplate>
		</asp:TemplateField>
		<asp:TemplateField HeaderText="本库记录">
			<ItemTemplate>
				<asp:Label ID="Label1" runat="server" Text='<%# Bind("DOCID") %>'></asp:Label>
			</ItemTemplate>
		</asp:TemplateField>
		<asp:TemplateField HeaderText="接收类型">
			<ItemTemplate>
				<%# Eval("MODIFYSTATE")%></ItemTemplate>
		</asp:TemplateField>
		<asp:BoundField DataField="MODIFYDATE" HeaderText="接收时间" DataFormatString="{0:yyyy-MM-dd}" />
		<asp:TemplateField HeaderText="调入状态">
			<ItemTemplate>
				<%# Eval("INPUTSTATE")></ItemTemplate>
		</asp:TemplateField>
		<asp:TemplateField HeaderText="过滤">
			<ItemTemplate>
				<%# Eval("HIDESTATE")%></ItemTemplate>
		</asp:TemplateField>
		<asp:BoundField DataField="DEALUSERNAME" HeaderText="处理人" />
		<asp:TemplateField HeaderText="操作">
			<ItemTemplate>
				<asp:LinkButton ID="lbtnImport" runat="server">调入</asp:LinkButton>
				<asp:LinkButton ID="lbtnDelete" runat="server">删除</asp:LinkButton>
			</ItemTemplate>
		</asp:TemplateField>
	</Columns>
</asp:GridView>
<script type="text/javascript">
	var grid = document.getElementById('<%=gvList.ClientID %>');
	if(grid&&grid.getElementsByTagName('td')!=null&&grid.getElementsByTagName('td').length>0)
	{
		document.getElementById('div_gridViewHeader').style.display='none';
	}
</script>

Tags:

乾卦學習感想

雖然很早的時候就聽說過易經,但一直也沒有去了解過,每次到圖書館裡面,借的書也都是有關計算機方面的,再就是我比較感興趣的道家或中醫了。相比計算機技術發展的日新月異,易經就有些相形見絀了,基本沒什麼變化,似乎用“易”來做書名都很不適當。也許就是易經的玄妙之處正在於此,是其以各種卦排列組合成不同的象,來解釋這個世界,是本質的,內在的,又是有些奧秘的。

我看了乾卦,有人說,能把乾卦研究明白了,就能參悟出許多哲理出來。確實,乾卦講的就是一個人一生的濃縮,一件事物發展的濃縮。因為易經裡面使用的都是象,用龍來比喻,或用其它的來比喻,也不知道古人是比喻能力很強還是怕後人不懂,干嘛弄這麼多比喻呢?

乾卦共有六個爻,其實每卦都是有六個。每個爻都有爻詞來解析的。初九是潛龍勿用,九二是見龍在田,九三是君子終日乾乾,九四是或躍在淵,九五是飛龍在天,上九是亢龍有悔。聽起來都是降龍十八掌的口決,阿金庸真是博學呀,順便佩服一下。龍從初九一直到上九,基本上就是一個人一生的狀態了。其實人也滿可悲的,從潛龍勿用,經過不斷的進取努力,最後的結果就是亢龍有悔。怪不得黃帝們都叫九五之尊,不叫九六之尊呢。

人在很多時候都是在不斷的向外追求,追求著外在東西,很少去了解自己,真正的給自己一些時間來觀察自己。知人者智,自知者明。還是要做一個明白人才好。就是吃東西,我自己是屬於胃寒的,我自己也的確花了些時間來了解什麼食物是寒性的,比如綠茶是寒的,我不喝;黃瓜是寒的,但我又特別喜歡吃,有些事情即使知道了,也做不到。

Tags:

jquery ajax调用asp.net webservice

jquery ajax调用asp.net webservice就一个难点:当创建好WebService的时候,类的属性[System.Web.Script.Services.ScriptService]是被注释了的,要取消注释,就可以调用了。
如下:

$(function(){
    var cur_url = location.href;
    var title = document.title;
    var host = location.host;
    cur_url = cur_url.replace(location.protocol+'//'+host,'');
    $.ajax({
        type:"POST",
        contentType:"application/json",
        url:"../../../LogAccess.asmx/InsertAccessingLog",
        data:"{pageTitle:'"+title+"',pageIp:'"+host+"',pageUrl:'"+cur_url+"'}",
        dataType:'json',
        success:function(result){
            if(result.d){
		//alert(result.d)
            }
        }
    });
});

Tags: ,

Jquery插件之可输入的select 《EDITABLE SELECT》

插件名称:jquery-editable-select
下载地址:http://plugins.jquery.com/node/9250

这个插件有个小问题:
1、显示的是option的text值,没有显示value值
2、如果option有value和text,获取不到value值
就是无法获取select option的value值。现将这个插件的源代码进行修改:修改的原来的funtion是

duplicateOptions: function() {
      var context = this;
      var wrapper = $(document.createElement('div'));
      wrapper.addClass('editable-select-options');
      var option_list = $(document.createElement('ul'));
      wrapper.append(option_list);
      var options = this.select.find('option');
      options.each(function() {
        if($(this).attr('selected')) {
          context.text.val($(this).val());
          context.current_value = $(this).val();
        };
        var li = $('<li>'+ $(this).val() +'</li>');
        context.initListItemEvents(li);
        option_list.append(li);
      });
      this.wrapper = wrapper;
      this.checkScroll();
    },

修改为:

duplicateOptions: function() {
      var context = this;
      var wrapper = $(document.createElement('div'));
      wrapper.addClass('editable-select-options');
      var option_list = $(document.createElement('ul'));
      wrapper.append(option_list);
      var options = this.select.find('option');
      options.each(function() {
        if($(this).attr('selected')) {
          context.text.val($(this).text());
          context.current_value = $(this).val();
        };
        var li = $('<li value='+$(this).val()+'>'+ $(this).text() +'</li>');
        context.initListItemEvents(li);
        option_list.append(li);
      });
      this.wrapper = wrapper;
      this.checkScroll();
    },

调用代码为:(可以直接使用)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>jQuery插件jquery.editable-select可输入的下拉框</title>
<script type="text/javascript" src="../jquery-1.3.2.js"></script>
<script src="jquery.editable-select.js"></script>
<link rel="stylesheet" type="text/css" href="jquery.editable-select.css"/>
</head>
<body>
	<div>
        <label for="name">Names</label>
        <select name="drpPublisher" id="drpPublisher" class="Winstar-input120">
			<option value="0">第一个</option>
			<option value="1">第二个</option>
			<option value="2">第三个</option>
			<option value="3">第四个</option>
		</select>
      </div>
     <input type="text" id="ddd" />
</body>
<script type="text/javascript">
$(function() {
  $('#drpPublisher').editableSelect(
    {
      bg_iframe: true,
      onSelect: function(list_item) {
        // 'this' is a reference to the instance of EditableSelect
        // object, so you have full access to everything there
		alert('List item text: '+ list_item.val());
        $('#ddd').val(this.text.val());
      },
      case_sensitive: false, // If set to true, the user has to type in an exact
                             // match for the item to get highlighted
      items_then_scroll: 10 // If there are more than 10 items, display a scrollbar
    }
  );
});
</script>
</html>

Tags:

pagepeel by webpicasso.de