Exemplo n.º 1
0
Arquivo: JetDB.cs Projeto: xqgzh/Z
        public void ExtractTableParameters(string TableName, System.Data.IDbDataAdapter adapter, out DatabaseCache InsertCache, out DatabaseCache DeleteCache, out DatabaseCache UpdateCache, out DatabaseCache IsExistCache, out System.Data.DataTable dt)
        {
            adapter.SelectCommand.CommandText = "select top 1 * from " + TableName;

            DataSet ds = new DataSet();

            dt = adapter.FillSchema(ds, SchemaType.Source)[0];

            dt.TableName = TableName;

            OleDbCommandBuilder builder = new OleDbCommandBuilder(adapter as OleDbDataAdapter);

            builder.ConflictOption = ConflictOption.OverwriteChanges;
            //builder.SetAllValues = false;
            OleDbCommand InsertCmd = builder.GetInsertCommand(true);
            builder.ConflictOption = ConflictOption.OverwriteChanges; InsertCache = new DatabaseCache(InsertCmd.CommandText, InsertCmd.Parameters);
            InsertCache.CurrentTable = dt;

            foreach (DataColumn c in dt.Columns)
            {
                if (c.AutoIncrement)
                {
                    InsertCache.IsHaveAutoIncrement = true;
                    InsertCache.SQL += ";Select @@IDENTITY;";
                    break;
                }
            }

            OleDbCommand UpdateCmd = builder.GetUpdateCommand(true);
            UpdateCache = new DatabaseCache(UpdateCmd.CommandText, UpdateCmd.Parameters);
            UpdateCache.CurrentTable = dt;

            OleDbCommand DeleteCmd = builder.GetDeleteCommand(true);
            DeleteCache = new DatabaseCache(DeleteCmd.CommandText, DeleteCmd.Parameters);
            DeleteCache.CurrentTable = dt;

            IsExistCache = new DatabaseCache(DeleteCmd.CommandText, DeleteCmd.Parameters);
            IsExistCache.CurrentTable = dt;
            IsExistCache.SQL = IsExistCache.SQL.Replace("DELETE FROM [" + TableName + "]", "Select count(1) from [" + TableName + "] with(nolock) ");
        }
Exemplo n.º 2
0
		protected void DbDataAdapter_FillSchema_Ds_SchemaType_Str(Sys.Data.Common.DbDataAdapter dbDA) {
			DataSet dsResult = new DataSet(); 
			DataSet dsExpected = new DataSet();
		
			// create expected dataset to compare result to
			ReadDBData_Fill(dbDA,ref dsExpected ,true);

			//dsExpected.Tables.Remove(dsExpected.Tables[1]);

			//execute FillSchema

			dsResult.Tables.Add("Table");
			DataTable[] dtArr = dbDA.FillSchema(dsResult,SchemaType.Mapped,dsResult.Tables[0].TableName);

			//************  Fix .Net bug? (FillSchema method add AutoIncrement=true) *******************
			dsResult.Tables[0].Columns["EmployeeID"].AutoIncrement = false;

			CompareResults_Fill(dsResult,dsExpected);
			Exception exp = null;
			try {
				BeginCase("Check return value - Table[0]");
				Compare(dtArr[0],dsResult.Tables[0] );
			}
			catch(Exception ex)	{exp = ex;}
			finally	{EndCase(exp); exp = null;}

			//close connection
			if (  ((IDbDataAdapter)dbDA).SelectCommand.Connection.State != ConnectionState.Closed )
				((IDbDataAdapter)dbDA).SelectCommand.Connection.Close();
		}
Exemplo n.º 3
0
		protected void DbDataAdapter_FillSchema_Ds_SchemaType(Sys.Data.Common.DbDataAdapter dbDA) {
			DataSet dsResult = new DataSet(); 
			DataSet dsExpected = new DataSet();
		
			// create expected dataset to compare result to
			ReadDBData_Fill(dbDA,ref dsExpected ,true);

			//  Note:   When handling batch SQL statements that return multiple results, 
			//	the implementation of FillSchema for the .NET Framework Data Provider for OLEDB 
			//	retrieves schema information for only the first result. 
			//	To retrieve schema information for multiple results, use Fill with the MissingSchemaAction set to AddWithKey
			//			if (dbDA.GetType() == typeof(Sys.Data.OracleClient.OracleDataAdapter)) 
			//				dsExpected.Tables.Remove(dsExpected.Tables[1]);

			//execute FillSchema

			//dsResult = dsExpected.Copy();
			DataTable[] dtArr = dbDA.FillSchema(dsResult,SchemaType.Mapped );

			//************  Fix .Net bug? (FillSchema method add AutoIncrement=true) *******************
			dsResult.Tables[0].Columns["EmployeeID"].AutoIncrement = false;
		
			CompareResults_Fill(dsResult,dsExpected);

			Exception exp = null;
			try {
				BeginCase("Check return value - Table[0]");
				Compare(dtArr[0],dsResult.Tables[0] );
			}
			catch(Exception ex)	{exp = ex;}
			finally	{EndCase(exp); exp = null;}

			//			if (dbDA.GetType() != typeof(Sys.Data.OracleClient.OracleDataAdapter)) 
			//				try
			//				{
			//					BeginCase("Check return value - Table[1]");
			//					Compare(dtArr[1],dsResult.Tables[1]);
			//				}
			//				catch(Exception ex)	{exp = ex;}
			//				finally	{EndCase(exp); exp = null;}
	
			//close connection
			if (  ((IDbDataAdapter)dbDA).SelectCommand.Connection.State != ConnectionState.Closed )
				((IDbDataAdapter)dbDA).SelectCommand.Connection.Close();
		}