本章主要介紹一下xml資料庫中sql語言解析的問題。
現在解析sql基本是使用了類似字尾表示式的解析方法,具體如下:
比如有乙個sql語言是這樣的:a>1 && b <2
如果我們現在將它轉換成具體sql動作如下,則會變成下面的樣子:
a 1 > b 2 < &&.
->與字尾表示式很相近,主要區別在於&&的判斷上。
演算法如下:
首先規定如下:
1.定義乙個棧p用來存放運算子。且&&的運算子優先級別低於》,《運算子。
2.只有當&& 或者 ||入棧p的情況下,才根據優先順序,將運算子推出棧,
3.反之則繼續進棧。
當前解析結果 當前棧
1.a 放入解析結果中 a null
2.>,放入棧中 a >
3.1 放入解析結果中 a 1 >
4.&&優先順序低,將》推出 a 1 > &&
5.b放入解析結果中 a 1 > b &&
6.<,由於&&優先順序低,《入站 a 1 > b 2 < &&
7.所有運算子出棧。
最後:a 1 > b 2 < &&
實際上,**會生成乙個action list,來儲存之前的解析結果。
action list如下:
action1 a1>
action2 b2<
action3 action1&&action2
關鍵**如下:
for(;i= 0;k--) else
}if(record != 0)
continue;
}if((c == operation_and.charat(0) && querylist[i+1] == operation_and.charat(1))
||(c == operation_or.charat(0) && querylist[i+1] == operation_or.charat(1))
||(c == operation_less_than_or_equal.charat(0) && querylist[i+1] == operation_less_than_or_equal.charat(1))
||(c == operation_more_than_or_equal.charat(0) && querylist[i+1] == operation_more_than_or_equal.charat(1))
||(c == operation_equal.charat(0) && querylist[i+1] == operation_equal.charat(1))
||(c == operation_not_equal.charat(0) && querylist[i+1] == operation_not_equal.charat(1))) else
} else
if(record != 0)
i++;
continue;
}if(c == mark_more_than || c == mark_less_than)
continue;
}if(c == mark_double_quotation)
}string node = string.valueof(querylist,i,j - i + 1);
nodelist.add(node);
i = j;
if(record != 0)
continue;
}if(c >= mark_number_0 && c <= mark_number_9)
}string node = string.valueof(querylist,i,j - i);
nodelist.add(node);
record = 0;
i = j - 1;
continue;
}if(c == operation_like.charat(0)
&& querylist[i+1] == operation_like.charat(1)
&& querylist[i+2] == operation_like.charat(2)
&& querylist[i+3] == operation_like.charat(3))
else if(querylist[j] != mark_single_quotation) else
}string operation = operation_like;
int operationnewpri = mprioritymap.get(operation);
if(operationlist.size() > 0) else
} else
if(record != 0)
i = i + 4;
break;}}
}record++;
}if(record != 0)
//last out
if(operationlist.size() != 0)
}
XML與資料庫(2)
1.0 簡介本 簡要的 了 xml和資料庫之間的關係,同時羅列出一些可以使用資料庫處理 xml文件的軟體工具。雖然在這裡不可能詳盡地介紹和提供對這些軟體更深層次的評價,但是我希望它能夠描述使用資料庫處理 xml文件中的主要部分。這裡有點偏向與關係資料 庫,因為我的經驗如此。2.0 為什麼使用資料庫?...
資料庫開發 2
if defined afx globalfuntion h 26b3816f 5d75 4df4 bad6 79deb8624cac included define afx globalfuntion h 26b3816f 5d75 4df4 bad6 79deb8624cac included ...
基於sqlCE 3 0的資料庫開發
最近想使用一下在wince連線sql server 2005資料庫的例項。此前一直安裝的是visual c 6.0以及evc 4.0,一直猶豫是否要安裝visual studio 2005這個巨集大的傢伙。但是在網上查了一下,多數與wince 5.0及sqlce3.0的相關例程和文章都是用vs開發的...