예제 #1
0
        private static void Screenshot()
        {
            var name = System.Reflection.Assembly.GetExecutingAssembly().GetName().Name;
            var bmp  = ReadBack.FrameBuffer();

            Clipboard.SetImage(bmp);
            bmp.Save(@"d:\" + name + ".png");
        }
예제 #2
0
            public bool Execute(Command command, TransactionHelper transactionHelper)
            {
                using (IDbCommand dbCommand = connection.CreateCommand())
                {
                    dbCommand.CommandText = command.Statement;
                    dbCommand.Transaction = transactionHelper.Transaction;

                    // Add parameters
                    foreach (object parameter in command.Parameters)
                    {
                        IDataParameter param = dbCommand.CreateParameter();
                        ReadBack       rb    = parameter as ReadBack;
                        if (rb != null)
                        {
                            param.DbType = GetDbTypeFromObject(values[rb.Name]);
                            param.Value  = values[rb.Name];
                        }
                        else
                        {
                            param.DbType = GetDbTypeFromObject(parameter);
                            param.Value  = parameter;
                        }
                        if (param.Value == null)
                        {
                            param.Value = System.DBNull.Value;
                        }
                        dbCommand.Parameters.Add(param);
                    }

                    if (command.IsAutoReadFieldsIntoBuffer)                     // we are interested in the result
                    {
                        using (IDataReader reader = dbCommand.ExecuteReader())
                        {
                            if (reader.Read())
                            {
                                for (int i = 0; i != reader.FieldCount; ++i)
                                {
                                    string name  = reader.GetName(i);
                                    object value = reader.GetValue(i);
                                    values[name] = value;
                                }
                                return(true);
                            }
                        }
                    }
                    else                     // or we are not.
                    {
                        try {
                            return(dbCommand.ExecuteNonQuery() != 0);
                        }
                        catch (System.Exception e)
                        {
                            bool   bErrorHandled = false;
                            string sDescription  = e.Message;

                            // IBM/DB2: with this database-kind when UPDATE, DELETE or FETCH doesnot affect rows an error is thrown by the ODBC-driver
                            // In reality the statement succeeds --> act as if it is so and ignore this specific error
                            if (sDescription.IndexOf("[IBM]") == 0 &&
                                sDescription.IndexOf("[DB2") >= 0 &&
                                sDescription.IndexOf("SQL0100W") >= 0
                                )
                            {
                                bErrorHandled = true;
                            }

                            if (!bErrorHandled)
                            {
                                throw new Altova.Types.TargetUpdateFailureException("DB Command Execution Failure: " + command.Statement, e);
                            }
                        }
                    }
                    return(false);
                }
            }