Используйте это вместо:
new StreamWriter("c:\\file.txt", true);
С этой перегрузкой конструктора StreamWriter вы выбираете, добавляете ли вы файл или перезаписываете его.
C # 4 и выше предлагает следующий синтаксис, который некоторые находят более читаемыми:
new StreamWriter("c:\\file.txt", append: true);
Необходимо определить обработчики исключений. Смотрите на http://dev.mysql.com/doc/refman/5.0/en/declare-handler.html
В MySQL 5 можно повысить ошибку путем вызова хранимой процедуры, которая не существует (НАЗОВИТЕ raise_error), или передача недопустимого значения к запросу (как пустой указатель к NOT NULL ограничил поле). Вот интересное сообщение Roland Bouman при повышении ошибок из функции MySQL:
http://rpbouman.blogspot.com/2005/11/using-udf-to-raise-errors-from-inside.html
Вы также можете вызвать существующую функцию с недопустимым числом аргументов.
На самом деле это комбинация всех трех ответов. Вы вызываете несуществующую процедуру, чтобы вызвать ошибку, а затем объявляете обработчик выхода, который перехватывает сгенерированную вами ошибку. Вот пример использования SQLSTATE 42000 (процедура не существует) для выдачи ошибки перед удалением, если для удаляемой строки установлен идентификатор внешнего ключа:
DROP PROCEDURE IF EXISTS decount_test;
DELIMITER //
CREATE DEFINER = 'root'@'localhost' PROCEDURE decount_test ( p_id bigint )
DETERMINISTIC MODIFIES SQL DATA
BEGIN
DECLARE EXIT HANDLER FOR SQLSTATE '42000'
SELECT 'Invoiced barcodes may not have accounting removed.';
IF (SELECT invoice_id
FROM accounted_barcodes
WHERE id = p_id
) THEN
CALL raise_error;
END IF;
DELETE FROM accounted_barcodes WHERE id = p_id;
END //
DELIMITER ;
Вывод:
call decount_test(123456);
+----------------------------------------------------+
| Invoiced barcodes may not have accounting removed. |
+----------------------------------------------------+
| Invoiced barcodes may not have accounting removed. |
+----------------------------------------------------+