Naming Rules
Table names and column names:
1.Must begin with a letter
2.Must be 1-30 characters long
3.Must contain only A-Z, a-z, 0-9, _, $, and #
4.Must not duplicate the name of another object owned by the same user
5.Must not be an Oracle server reserved word
但是oracle805往后,表名已经可以是中文的了,虽然并不提倡使用.
using System.Text.RegularExpressions;
private bool checknewtablename(string newname)
{
string patternname = @"/b[a-zA-Z/u4e00-/u9fa5][a-zA-Z0-9#$_/u4e00-/u9fa5]{0,29}"; //正则表达式
System.Text.RegularExpressions.Match m = null;
if (newname != null && newname != "")
{
if (GetLength(newname) <= 30) //GetLength()函数在后面有定义,获得含有中文的字符串的长度.
{
m = System.Text.RegularExpressions.Regex.Match(newname, patternname);
if (m.Success)
{
if (m.Groups.Count == 1)
{
if (m.Groups[0].Length != newname.Length)
return false;
else
return true;
}
else
return false;
}
else
return false;
}
else
return false;
}
return false;
}
//获取字符串的长度,主要解决含有中文的特殊情况.
public static int GetLength(string strSource)
{
Regex regex = new Regex("[/u4e00-/u9fa5]+", RegexOptions.Compiled);
int nLength = strSource.Length;
for (int i = 0; i < strSource.Length; i++)
{
if (regex.IsMatch(strSource.Substring(i, 1)))
{
nLength++;
}
}
return nLength;
}