با سلام خدمت اساتید محترم
می خواستم بدونم چجوری می شه در برنامه جاوا به یک پاگاه داده متصل شد و اطلاعات رو از اون خوند ؟ ممنون می شم منو راهنمایی کنید.
با سلام خدمت اساتید محترم
می خواستم بدونم چجوری می شه در برنامه جاوا به یک پاگاه داده متصل شد و اطلاعات رو از اون خوند ؟ ممنون می شم منو راهنمایی کنید.
یک سایت خیلی خوب با آموزش ساده و جامع (به زبان انگلیسی): http://www.tutorialspoint.com/jdbc/
مطالب خیلی زیادی در این ارتباط وجود داره. فقط بدونید جاوا به راحتی با هر دیتابیسی اون هم به شکل یکسانی متصل میشه (سرچ کنید JDBC)
همین سوالتون رو اگر به فارسی سرچ می کردید هم آموزش هایی وجود داره. مثلا: http://www.tahlildadeh.com/ArticleDe...A7%D9%88%D8%A7
کدتون رو قرار بدید
با سلام و تشکر از راهنمایی های شما مشکل قبلی من حل شد اما یک مشکل جدید پیدا کردم و اون اینه که زمانی که می خوام به یک پایگاه داده mysql وصل بشم و اطلاعات جدول رو بخونم با پیغام زیر مواجه می شم
Illegal operation on empty result set.
کد برنامه
import java.sql.Statement;
import java.sql.*;
public class JCDBtest {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
String path ="jdbc:mysql://localhost:3306/ccdbfinal";
String un ="root";
String pw ="";
try{
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection(path,un,pw);
Statement a = con.createStatement();
String sql = "Select * FROM iou";
ResultSet rs = a.executeQuery("Select * FROM ioutable");
double i1 = rs.getDouble("I1");
double r = i1*2;
System.out.println(r);
}
catch(Exception e){
System.out.println(e.getMessage());}
}
}
ممنون می شم منو راهنمایی کنید.
دلیلش یه خورده به گفته ای tricky است! چون ResultSet یک cursor داره که پس از تشکیل، cursor رو قبل از اولین نتیجه قرار میده (متدی داریم به اسم beforeFirst() و isBeforeFirst() ). شما میتونید تست کنید rs.first() که cursor روی اولین نتیجه میبره و اگر نتیجه ای باشه و در نتیجه اولین نتیجه وجود داره true رو برمیگردونه و میدونی خالی نیست.
در توضیحات بالا First cursor position is Before first row و Rows and columns count from one مهمه که باید در نظر داشته باشید.
در کدتون بعد از خط
ResultSet rs = a.executeQuery("Select * FROM ioutable");
بنویسید:
System.out.println("BeforeFirst:"+ rs.isBeforeFirst());
System.out.println("First:"+ rs.isFirst());
System.out.println("Last:"+ rs.isLast());
System.out.println("AfterLast:"+ rs.isAfterLast());
تا دقیقا موقعیت cursor رو ببینید.
همچنین از rs.next() برای جلو بردن cursor استفاده می کنی (یه جورایی شبیه fetch تو php است)
پس با اولین rs.next به اولین نتیجه میرسیم. کد:
double i1;
while(rs.next()){
i1=rs.getDouble("I1");
System.out.println(i1);
}
آخرین ویرایش به وسیله vahid-p : یک شنبه 23 خرداد 1395 در 08:52 صبح دلیل: تکمیل توضیحات
سلام ، تاپیک قدیمی اوردم بالا چون مطلب بود...
من از همین سایت فارسی اشاره شده استفاده کردم منتها الان ارور داره...
http://uupload.ir/files/8zhx_error1.jpg
اونجایی که عکس گذاشتم ، از عبارت Exception استفاده کردم و فک می کنم حل شد