ورود

View Full Version : سوال در مورد فرم جاوا



mohandesr
چهارشنبه 29 مرداد 1393, 18:15 عصر
با سلام
من یه فرم تو جاوا در محیط اکلیپس دارم و درون این فرم یه دکمه به نام ثبت که می خوام از طریق کلیک کردن این دکمه اطلاعاتی رو به پایگاه داده ارسال کنم ، ارتباط با بانکم هم برقراره فقط کدهای مربوط به این رویداد رو می خوام ، تو رو خدا اگه کسی می تونه کممم کنه ، ممنون

dele514
چهارشنبه 29 مرداد 1393, 19:44 عصر
پایگاه دادتون چیه؟
و اینکه اطلاعاتتون چه نوع اطلاعاتی؟(منظروم اینه که اطلاعات از کاربر گرفته میشه یا خودتون میخواین داده پیش فرض بفرستید؟)

vahid-p
چهارشنبه 29 مرداد 1393, 19:56 عصر
عنوان تاپیک اشتباهه. سوال شما در مورد ارتباط با دیتابیس است.

شما کد های SQL میخواید. که راحت از اینترنت پیدا میشه.
مثلا برای اضافه کردن یک سطر به جدول دیتابیس از INSERT استفاده میکنی. که باید جدول مشخص باشه و بعد اسم ستون ها و مقادیر. که البته چند نوع روش نگارش داره. مثلا یک نمونش :
INSERT INTO tablename (firstname,lastname,date) VALUES (myfirstname,mylastname,CURRENT_TIMESTAMP);
حالا کد جاواش همینو مینویسیم :

String firstname=textField1.getText();
String lastname=textField2.getText();
conn.prepareStatement("INSERT INTO mytable (firstname,lastname,date) VALUES ("+firstname+","+lastname+",CURRENT_TIMESTAMP)").execute();


اینجا اضافه کردن بود. اگر واکشی بود به جای execute از executeQuery استفاده کن که آبجکتی از ResultSet بهت میده.

در مورد ایجاد جدول و دیتابیس و... هم عباراتش رو تو گوگل سرچ کن. یا میتونی از این سایت مفید استفاده کنی : http://www.w3schools.com/sql

محمد فدوی
چهارشنبه 29 مرداد 1393, 20:12 عصر
conn.prepareStatement("INSERT INTO mytable (firstname,lastname,date) VALUES ("+firstname+","+lastname+",CURRENT_TIMESTAMP)").execute();


vahid-p جان این کد (و کدهای مشابه که بی واسطه داده های ورودی رو به کوئری اضافه میکنن) به شدت در مقابل SQL Inject نا امن هست. پیشنهاد میکنم از این کد استفاده کنید:


PreparedStatement ps = conn.prepareStatement("INSERT INTO mytable (firstname,lastname,date) VALUES (?,?,CURRENT_TIMESTAMP)");


ps.setString(1, firstname);
ps.setString(2, lastname);
ps.execute();

mohandesr
چهارشنبه 29 مرداد 1393, 22:57 عصر
سلام اقای وحید بازم ممنون از پاسختون
من کد های شما رو تو رویداد کلیک ثبتم گذاشتم روی conn خطا میده می خواستم کد ها رو بزارم براتون ولی کد ها به هم میریزه میشه بگین شما چه جوری کدهارو به این قشنگی می ذارین تا بعد من براتون کدهامو بزارم ؟

vahid-p
پنج شنبه 30 مرداد 1393, 17:04 عصر
MohammadF ممنون از تذکرتون. کلا زیاد به مسائل ایمنی توجه نمیکنم :لبخند: ( که البته ناشی از مطالعه کم بنده در این زمینه است )
کاش میشد در مورد متد setString توضیح میدادید و اینکه دقیقا عملکردش به جز جایگزین کردن چی هست؟


من کد های شما رو تو رویداد کلیک ثبتم گذاشتم روی conn خطا میده می خواستم کد ها رو بزارم براتون ولی کد ها به هم میریزه میشه بگین شما چه جوری کدهارو به این قشنگی می ذارین تا بعد من براتون کدهامو بزارم ؟
خب دلیلش اینه که من تمام کد رو نذاشتم که. conn یک آبجکت هست که قبلا ایجاد شده و شما گفتید الان ارتباطتون برقراره پس من یه اسم فرضی استفاده کردم. conn آبجکتی هست که از DriverManager.getConnection گرفتم مثلا.
البته ممکنه در SQL Syntax هم مشکلاتی باشه که خب همش در حد چندتا کاما و نقطه ویرگول اینا باشه که میتونی درستش کنی.

راستی یه نکته : سعی کنید اینجور کدهایی که معمولا حجیم هستند رو مستقیم در متد رویداد دکمه نذارید. مخصوصا که کلاس رویداد دکمه مثل کلاس داخلی عمل میکنه و دسترسیتون به صورت ClassName.this. است. بهتره هر عملی رو به صورت یک متد در کلاس خاصی بنویسید و فقط از اونجا صداش بزنید. مثلا کل رویداد کلیک میشه چنین چیزی :

button.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
karbar.this.addEntity(arg1,arg2,arg3);
}
});


برای قرار دادن کدهای جاوا از تگ :


استفاده کن و وسط این تگ کدهات رو قرار بده. برای SQL و php و C++‎‎‎‎‎‎‎‎‎ و... هم وجود داره. همه این ها آیکن دارن در ادیتوری که پست هات رو مینویسی.
موفق باشید

mohandesr
پنج شنبه 30 مرداد 1393, 18:05 عصر
خیلی ممنون آقای وحید اره امروز که دوباره کدهارو بررسی کردم مشکلمو پیدا کردم و حل شد ، می خواستم ببینم شما در مورد جنا نیز اطلاعاتی دارین یا نه ، من می خوام حالا با استفاده از کتابخانه جنا فایل OWl اطلاعاتمو تولید کنم ، اگه بتونید کمکم کنید ممنون میشم .

vahid-p
جمعه 31 مرداد 1393, 16:18 عصر
منظورتون JNA هست؟ اگر خیر نه اسمی که گفتید نشنیدم!