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; }