PDA

View Full Version : transaction در mysql



jeus
چهارشنبه 19 تیر 1387, 17:21 عصر
من نیاز دارم که برای ورود اطلاعاتم درون MySql از روش یا همه یا هیچ استفاده کنم توی MSSQL یک همچین چیزی ما داشتیم و ازش استفاده میکردم اما نمی دونم توی MYSQL چجوری استفاده میشه و چطوری اونو باید توی جاوا بیارم از تمام دوستان ممنونم
این خیلی حیاتیه

mazdadoost
چهارشنبه 19 تیر 1387, 21:12 عصر
با سلام:
دوست عزیز تراکنش ها در لایه های مختلفی قابل دسترسی هستند .برای ابتدا می تونید از از امکاناتی که درایور در اختیار شما میذاره تا تراکنش های دیتابیس رو کنترل کنید استفاده کنید.در این حالت با توجه به اینکه خود درایور JDBC به شکل خود کار همه تراکنش های موفق رو Commit و تراکنش های نا موفق رو rollback می کنه برای بدست گزفتن کار ها کافیه با متد setAutoCommit, شی Connection استفاده کنید.البته این به شکل محلی و در محیط های UnManaged مثل برنامه هایی که در سرولت کانتینر اجرا میشند یا وقتی برنامه کلاینت در همون سیستمی که دیتابیس درش اجرا میشه مفید هست .اگر در محیط های حساس و بحرانی مثل سیستم های بانکداری یا انبار داری آنلاین با حجم گسترده تراکنش ها و به صورت توزیع شده کار میکنید فقط باید از امکانات اپلیکشین سرور EE استفاده کنید.
اینم یه متد که میتونید ازش برای کنترل همه یا هیچ استفاده کنید.

public static void executeTransaction(Connection con) {
try {
//Switch to manual transaction mode by setting
//autocommit to false. Note that this starts the first
//manual transaction.
con.setAutoCommit(false);
Statement stmt = con.createStatement();
stmt.executeUpdate("INSERT INTO Production.ScrapReason(Name) VALUES('Wrong size')");
stmt.executeUpdate("INSERT INTO Production.ScrapReason(Name) VALUES('Wrong color')");
con.commit(); //This commits the transaction and starts a new one.
stmt.close(); //This turns off the transaction.
System.out.println("Transaction succeeded. Both records were written to the database.");
}
catch (SQLException ex) {
ex.printStackTrace();
try {
con.rollback();
System.out.println("Transaction failed. No records were written to the database.");
}
catch (SQLException se) {
se.printStackTrace();
}
}
}
خود کد ها کامنت داره.
موفق باشید.