本文整理汇总了C#中System.Data.OleDb.OleDbConnection.GetLiteralQuotes方法的典型用法代码示例。如果您正苦于以下问题:C# OleDbConnection.GetLiteralQuotes方法的具体用法?C# OleDbConnection.GetLiteralQuotes怎么用?C# OleDbConnection.GetLiteralQuotes使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Data.OleDb.OleDbConnection
的用法示例。
在下文中一共展示了OleDbConnection.GetLiteralQuotes方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GetDataSourceInformationTable
//.........这里部分代码省略.........
row[DbMetaDataColumnNames.CompositeIdentifierSeparatorPattern] = builder3.ToString();
}
else if (unescapedString != null)
{
StringBuilder builder4 = new StringBuilder();
ADP.EscapeSpecialCharacters(unescapedString, builder4);
row[DbMetaDataColumnNames.CompositeIdentifierSeparatorPattern] = builder4.ToString();
}
object dataSourcePropertyValue = connection.GetDataSourcePropertyValue(OleDbPropertySetGuid.DataSourceInfo, 40);
if (dataSourcePropertyValue != null)
{
row[DbMetaDataColumnNames.DataSourceProductName] = (string) dataSourcePropertyValue;
}
row[DbMetaDataColumnNames.DataSourceProductVersion] = base.ServerVersion;
row[DbMetaDataColumnNames.DataSourceProductVersionNormalized] = base.ServerVersionNormalized;
row[DbMetaDataColumnNames.ParameterMarkerFormat] = "?";
row[DbMetaDataColumnNames.ParameterMarkerPattern] = @"\?";
row[DbMetaDataColumnNames.ParameterNameMaxLength] = 0;
dataSourcePropertyValue = connection.GetDataSourcePropertyValue(OleDbPropertySetGuid.DataSourceInfo, 0x2c);
GroupByBehavior unknown = GroupByBehavior.Unknown;
if (dataSourcePropertyValue != null)
{
switch (((int) dataSourcePropertyValue))
{
case 1:
unknown = GroupByBehavior.NotSupported;
break;
case 2:
unknown = GroupByBehavior.ExactMatch;
break;
case 4:
unknown = GroupByBehavior.MustContainAll;
break;
case 8:
unknown = GroupByBehavior.Unrelated;
break;
}
}
row[DbMetaDataColumnNames.GroupByBehavior] = unknown;
this.SetIdentifierCase(DbMetaDataColumnNames.IdentifierCase, 0x2e, row, connection);
this.SetIdentifierCase(DbMetaDataColumnNames.QuotedIdentifierCase, 100, row, connection);
dataSourcePropertyValue = connection.GetDataSourcePropertyValue(OleDbPropertySetGuid.DataSourceInfo, 0x55);
if (dataSourcePropertyValue != null)
{
row[DbMetaDataColumnNames.OrderByColumnsInSelect] = (bool) dataSourcePropertyValue;
}
DataTable table2 = internalConnection.BuildInfoLiterals();
if (table2 != null)
{
DataRow[] rowArray = table2.Select("Literal = " + 0x11.ToString(CultureInfo.InvariantCulture));
if (rowArray != null)
{
object obj4 = rowArray[0]["InvalidChars"];
if (obj4.GetType() == typeof(string))
{
string str6;
string invalidChars = (string) obj4;
object obj3 = rowArray[0]["InvalidStartingChars"];
if (obj3.GetType() == typeof(string))
{
str6 = (string) obj3;
}
else
{
str6 = invalidChars;
}
row[DbMetaDataColumnNames.IdentifierPattern] = this.BuildRegularExpression(invalidChars, str6);
}
}
}
connection.GetLiteralQuotes("GetSchema", out str4, out str3);
if (str4 != null)
{
if (str3 == null)
{
str3 = str4;
}
if (str3.Length == 1)
{
StringBuilder builder = new StringBuilder();
ADP.EscapeSpecialCharacters(str3, builder);
string str2 = builder.ToString();
builder.Length = 0;
ADP.EscapeSpecialCharacters(str4, builder);
builder.Append("(([^");
builder.Append(str2);
builder.Append("]|");
builder.Append(str2);
builder.Append(str2);
builder.Append(")*)");
builder.Append(str2);
row[DbMetaDataColumnNames.QuotedIdentifierPattern] = builder.ToString();
}
}
table.AcceptChanges();
return table;
}
示例2: DeriveParametersFromStoredProcedure
// known difference: when getting the parameters for a sproc, the
// return value gets marked as a return value but for a sql stmt
// the return value gets marked as an output parameter.
static private OleDbParameter[] DeriveParametersFromStoredProcedure(OleDbConnection connection, OleDbCommand command) {
OleDbParameter[] plist = new OleDbParameter[0];
if (connection.SupportSchemaRowset(OleDbSchemaGuid.Procedure_Parameters)) {
string quotePrefix, quoteSuffix;
connection.GetLiteralQuotes(ADP.DeriveParameters, out quotePrefix, out quoteSuffix);
Object[] parsed = MultipartIdentifier.ParseMultipartIdentifier(command.CommandText, quotePrefix, quoteSuffix, '.', 4, true, Res.OLEDB_OLEDBCommandText, false); // MDAC 70930
if (null == parsed[3]) {
throw ADP.NoStoredProcedureExists(command.CommandText);
}
Object[] restrictions = new object[4];
object value;
// Parse returns an enforced 4 part array
// 0) Server - ignored but removal would be a run-time breaking change from V1.0
// 1) Catalog
// 2) Schema
// 3) ProcedureName
// Restrictions array which is passed to OleDb API expects:
// 0) Catalog
// 1) Schema
// 2) ProcedureName
// 3) ParameterName (leave null)
// Copy from Parse format to OleDb API format
Array.Copy(parsed, 1, restrictions, 0, 3);
//if (cmdConnection.IsServer_msdaora) {
// restrictions[1] = Convert.ToString(cmdConnection.UserId).ToUpper();
//}
DataTable table = connection.GetSchemaRowset(OleDbSchemaGuid.Procedure_Parameters, restrictions);
if (null != table) {
DataColumnCollection columns = table.Columns;
DataColumn parameterName = null;
DataColumn parameterDirection = null;
DataColumn dataType = null;
DataColumn maxLen = null;
DataColumn numericPrecision = null;
DataColumn numericScale = null;
DataColumn backendtype = null;
int index = columns.IndexOf(ODB.PARAMETER_NAME);
if (-1 != index) parameterName = columns[index];
index = columns.IndexOf(ODB.PARAMETER_TYPE);
if (-1 != index) parameterDirection = columns[index];
index = columns.IndexOf(ODB.DATA_TYPE);
if (-1 != index) dataType = columns[index];
index = columns.IndexOf(ODB.CHARACTER_MAXIMUM_LENGTH);
if (-1 != index) maxLen = columns[index];
index = columns.IndexOf(ODB.NUMERIC_PRECISION);
if (-1 != index) numericPrecision = columns[index];
index = columns.IndexOf(ODB.NUMERIC_SCALE);
if (-1 != index) numericScale = columns[index];
index = columns.IndexOf(ODB.TYPE_NAME); // MDAC 72315
if (-1 != index) backendtype = columns[index];
DataRow[] dataRows = table.Select(null, ODB.ORDINAL_POSITION_ASC, DataViewRowState.CurrentRows); // MDAC 70928
plist = new OleDbParameter[dataRows.Length];
for(index = 0; index < dataRows.Length; ++index) {
DataRow dataRow = dataRows[index];
OleDbParameter parameter = new OleDbParameter();
if ((null != parameterName) && !dataRow.IsNull(parameterName, DataRowVersion.Default)) {
// $
parameter.ParameterName = Convert.ToString(dataRow[parameterName, DataRowVersion.Default], CultureInfo.InvariantCulture).TrimStart(new char[] { '@', ' ', ':'});
}
if ((null != parameterDirection) && !dataRow.IsNull(parameterDirection, DataRowVersion.Default)) {
short direction = Convert.ToInt16(dataRow[parameterDirection, DataRowVersion.Default], CultureInfo.InvariantCulture);
parameter.Direction = ConvertToParameterDirection(direction);
}
if ((null != dataType) && !dataRow.IsNull(dataType, DataRowVersion.Default)) {
// need to ping FromDBType, otherwise WChar->WChar when the user really wants VarWChar
short wType = Convert.ToInt16(dataRow[dataType, DataRowVersion.Default], CultureInfo.InvariantCulture);
parameter.OleDbType = NativeDBType.FromDBType(wType, false, false).enumOleDbType;
}
if ((null != maxLen) && !dataRow.IsNull(maxLen, DataRowVersion.Default)) {
parameter.Size = Convert.ToInt32(dataRow[maxLen, DataRowVersion.Default], CultureInfo.InvariantCulture);
}
switch(parameter.OleDbType) {
case OleDbType.Decimal:
case OleDbType.Numeric:
case OleDbType.VarNumeric:
if ((null != numericPrecision) && !dataRow.IsNull(numericPrecision, DataRowVersion.Default)) {
// @devnote: unguarded cast from Int16 to Byte
parameter.PrecisionInternal = (Byte) Convert.ToInt16(dataRow[numericPrecision], CultureInfo.InvariantCulture);
//.........这里部分代码省略.........
示例3: UnquoteIdentifier
public string UnquoteIdentifier(string quotedIdentifier, OleDbConnection connection){
ADP.CheckArgumentNull(quotedIdentifier, "quotedIdentifier");
// if the user has specificed a prefix use the user specified prefix and suffix
// otherwise get them from the provider
string quotePrefix = QuotePrefix;
string quoteSuffix = QuoteSuffix;
if (ADP.IsEmpty(quotePrefix) == true) {
if (connection == null) {
// VSTFDEVDIV 479567: use the adapter's connection if UnquoteIdentifier was called from
// DbCommandBuilder instance (which does not have an overload that gets connection object)
connection = base.GetConnection() as OleDbConnection;
if (connection == null) {
throw ADP.QuotePrefixNotSet(ADP.UnquoteIdentifier);
}
}
connection.GetLiteralQuotes(ADP.UnquoteIdentifier, out quotePrefix, out quoteSuffix);
// if the quote suffix is null assume that it is the same as the prefix (See OLEDB spec
// IDBInfo::GetLiteralInfo DBLITERAL_QUOTE_SUFFIX.)
if (quoteSuffix == null) {
quoteSuffix = quotePrefix;
}
}
String unquotedIdentifier;
// ignoring the return value because it is acceptable for the quotedString to not be quoted in this
// context.
ADP.RemoveStringQuotes(quotePrefix, quoteSuffix, quotedIdentifier, out unquotedIdentifier);
return unquotedIdentifier;
}
示例4: GetDataSourceInformationTable
//.........这里部分代码省略.........
dataSourceInformation[DbMetaDataColumnNames.DataSourceProductVersionNormalized] = ServerVersionNormalized;
// values that are the same for all OLE DB Providers. See SQLBU 308529
dataSourceInformation[DbMetaDataColumnNames.ParameterMarkerFormat] = "?";
dataSourceInformation[DbMetaDataColumnNames.ParameterMarkerPattern] = "\\?";
dataSourceInformation[DbMetaDataColumnNames.ParameterNameMaxLength] = 0;
property = connection.GetDataSourcePropertyValue(OleDbPropertySetGuid.DataSourceInfo,ODB.DBPROP_GROUPBY);
GroupByBehavior groupByBehavior = GroupByBehavior.Unknown;
if (property != null) {
switch ((int)property) {
case ODB.DBPROPVAL_GB_CONTAINS_SELECT:
groupByBehavior = GroupByBehavior.MustContainAll;
break;
case ODB.DBPROPVAL_GB_EQUALS_SELECT:
groupByBehavior = GroupByBehavior.ExactMatch;
break;
case ODB.DBPROPVAL_GB_NO_RELATION:
groupByBehavior = GroupByBehavior.Unrelated;
break;
case ODB.DBPROPVAL_GB_NOT_SUPPORTED:
groupByBehavior = GroupByBehavior.NotSupported;
break;
}
}
dataSourceInformation[DbMetaDataColumnNames.GroupByBehavior] = groupByBehavior;
SetIdentifierCase(DbMetaDataColumnNames.IdentifierCase,ODB.DBPROP_IDENTIFIERCASE,dataSourceInformation, connection);
SetIdentifierCase(DbMetaDataColumnNames.QuotedIdentifierCase,ODB.DBPROP_QUOTEDIDENTIFIERCASE,dataSourceInformation, connection);
property = connection.GetDataSourcePropertyValue(OleDbPropertySetGuid.DataSourceInfo,ODB.DBPROP_ORDERBYCOLUNSINSELECT);
if (property != null) {
dataSourceInformation[DbMetaDataColumnNames.OrderByColumnsInSelect] = (bool) property;
}
DataTable infoLiterals = internalConnection.BuildInfoLiterals();
if (infoLiterals != null){
DataRow[] tableNameRow = infoLiterals.Select("Literal = " + ODB.DBLITERAL_TABLE_NAME.ToString(CultureInfo.InvariantCulture));
if (tableNameRow != null) {
object invalidCharsObject = tableNameRow[0]["InvalidChars"];
if (invalidCharsObject.GetType() == typeof(string)) {
string invalidChars = (string)invalidCharsObject;
object invalidStartingCharsObject = tableNameRow[0]["InvalidStartingChars"];
string invalidStartingChars;
if (invalidStartingCharsObject.GetType() == typeof(string)) {
invalidStartingChars = (string)invalidStartingCharsObject;
}
else {
invalidStartingChars = invalidChars;
}
dataSourceInformation[DbMetaDataColumnNames.IdentifierPattern] =
BuildRegularExpression(invalidChars,invalidStartingChars);
}
}
}
// build the QuotedIdentifierPattern using the quote prefix and suffix from the provider and
// assuming that the quote suffix is escaped via repetion (i.e " becomes "")
string quotePrefix;
string quoteSuffix;
connection.GetLiteralQuotes(ADP.GetSchema, out quotePrefix, out quoteSuffix);
if (quotePrefix != null){
// if the quote suffix is null assume that it is the same as the prefix (See OLEDB spec
// IDBInfo::GetLiteralInfo DBLITERAL_QUOTE_SUFFIX.)
if (quoteSuffix == null) {
quoteSuffix = quotePrefix;
}
// only know how to build the parttern if the suffix is 1 character
// in all other cases just leave the field null
if (quoteSuffix.Length == 1) {
StringBuilder scratchStringBuilder = new StringBuilder();
ADP.EscapeSpecialCharacters(quoteSuffix,scratchStringBuilder );
string escapedQuoteSuffixString = scratchStringBuilder.ToString();
scratchStringBuilder.Length = 0;
ADP.EscapeSpecialCharacters(quotePrefix, scratchStringBuilder);
scratchStringBuilder.Append("(([^");
scratchStringBuilder.Append(escapedQuoteSuffixString);
scratchStringBuilder.Append("]|");
scratchStringBuilder.Append(escapedQuoteSuffixString);
scratchStringBuilder.Append(escapedQuoteSuffixString);
scratchStringBuilder.Append(")*)");
scratchStringBuilder.Append(escapedQuoteSuffixString);
dataSourceInformation[DbMetaDataColumnNames.QuotedIdentifierPattern] = scratchStringBuilder.ToString();
}
}
dataSourceInformationTable.AcceptChanges();
return dataSourceInformationTable;
}