الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ظهور SQLException: No data found عند ربط الداتا بالجافا

بدأه sara33 في 4 مايو 2012 · 17 رد · 1,111 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكــم ورحمة الله ..

أنشأت قاعدة بيانات للطلاب ثم ربطها بكود الجافا ..لكن ظهر عندي إكسبشن وماعرفت إيش بالضبط ؟؟

SEVERE: null
java.sql.SQLException: No data found
	at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7137)
	at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(JdbcOdbc.java:3072)
	at sun.jdbc.odbc.JdbcOdbcConnection.initialize(JdbcOdbcConnection.java:323)
	at sun.jdbc.odbc.JdbcOdbcDriver.connect(JdbcOdbcDriver.java:174)
	at java.sql.DriverManager.getConnection(DriverManager.java:579)
	at java.sql.DriverManager.getConnection(DriverManager.java:243)
	at javaapplication105.login.connect(login.java:49)
	at javaapplication105.login.<init>(login.java:33)
	at javaapplication105.login.main(login.java:120)

Exception in thread "main" java.lang.NullPointerException
	at javaapplication105.login.connect(login.java:54)
	at javaapplication105.login.<init>(login.java:33)
	at javaapplication105.login.main(login.java:120)
Java Result: 1

أعتذر عن طرح المشكله لكن هذا أول محاوله لي بالربط .... ؟؟

وهذا الكـــود مبسط :::

public class login {



	Connection connect;
	Statement statement;
	ResultSet resualt;

	JFrame f=new JFrame(" User Login ");
	JLabel l=new JLabel("StudentID:");
        JLabel l1=new 	JLabel("	studentName:");
        JTextField t=new JTextField(10);
        JTextField t1=new JTextField(10);
        JButton b=new JButton("login");

    public login() {

    	   connect();
           creatFrame();
    }


public  void connect()
{
        try {
            String driver="sun.jdbc.odbc.JdbcOdbcDriver";

                      Class.forName(driver);


                  String db="jdbc:odbc:loginSystem";

                      connect=DriverManager.getConnection(db);

                      statement=connect.createStatement();
        } catch (Exception ex) {
            Logger.getLogger(login.class.getName()).log(Level.SEVERE, null, ex);
        }



}



public void creatFrame()
{

f.setSize(600,400);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);

JPanel p=new JPanel();
p.add(l);
p.add(t);
p.add(l1);
p.add(t1);
p.add(b);

b.addActionListener(new ActionListener()
{
	public void actionPerformed(ActionEvent e)
	{
                try {
                    String user=t.getText().trim();
                    String pass=t1.getText().trim();

                    String sql="select student-id,studentName from student where student-id='"+ user +"' and studentName= '" + pass +"'";

                    //execute sql quary
                     resualt=statement.executeQuery(sql);

                    int count=0;
                    while( resualt.next())
                    {
                            count+=1;
                    }
                    if (count ==1)
                    {
                    JOptionPane.showMessageDialog(null,"User Found");
                    }

                    else

                    JOptionPane.showMessageDialog(null,"User  NOT Found!");
                } catch (Exception ex) {

                }

                        }});




f.add(p);
}



public static void main(String[]args)
{
  new login();
}
}

جزاكم رب خير

#2

هناك في الاتصال بقاعدة البيانات كما يبين الاكسبشن حيث انه حدث في الداله connect

at javaapplication105.login.connect(login.java:54)

ارجعي للسطر 54 في البرنامج

No intellectual battle was ever won through retreat
You do not watch Gintama? Dude, you are missing a lot!


صورةmsrgb1485.gif ocajavase7programmerclr.gif

#3

أنا فاهمـه كيف أحدد مكان الاكسبشن لكن هو يقصد الخطأ هنا في هذه الداله

public  void connect() 
{ 
        try { 
            String driver="sun.jdbc.odbc.JdbcOdbcDriver"; 

                      Class.forName(driver); 


                  String db="jdbc:odbc:loginSystem"; 

                      connect=DriverManager.getConnection(db); 

                      statement=connect.createStatement(); 
        } catch (Exception ex) { 
            Logger.getLogger(login.class.getName()).log(Level.SEVERE, null, ex); 
        } 



}

لكن حاولت مااعرفت أيش الخطأ في هذا الكود ؟؟؟

وتأكدت إنه قاعدة البيانات فيهاا بينات الطلاب ليش يقول data not found ???????

يااليت أحد يفيدنــي

#4

اذا صدق ظني فان السترينغ db ناقص حيث اعتقد انكي سوف تظيفين عنوان قاعدة البيانات URL في حالة لم تكن embedded ورقم المنفذ port

هل قاعدة البيانات لها كلمة سر؟

اذا كان لها كلمة سر فان السطر

connect=DriverManager.getConnection(db);

يجب اضافة كلمة السر واسم المستخدم له

هل يمكن ان تحددي لي اين السطر 54 بالضبط؟

لم يسبق لي التعامل مع قاعدة البيانات هذه بالذات اكثر تعاملي مع MySQL

تحياتي

No intellectual battle was ever won through retreat
You do not watch Gintama? Dude, you are missing a lot!


صورةmsrgb1485.gif ocajavase7programmerclr.gif

#5
 statement=connect.createStatement();

هذا هو السطر 54 ..وقاعدة البيانات ماعندها كلمة ســر

ياليــــت تنحل المشكله ياارب ...

تم تعديل هذه المشاركة بواسطة sara33 في 4 مايو 2012 في 20:49

#6

جربي جعل السطر

jdbc:odbc:loginSystem

كالتالي

jdbc:odbc:login

الخطأ هو في هذا السطر كما ارجح

No intellectual battle was ever won through retreat
You do not watch Gintama? Dude, you are missing a lot!


صورةmsrgb1485.gif ocajavase7programmerclr.gif

#7

هل تستخدمي الأسلوب

select id in variable from some_table where some_condition

إذا كنت تستخدميه فالحاصل هنا

فإنه لا يوجد أي سطر row في قاعدة البيانات يحقق الشرط

لذا فقاعدة البيانات لا تعرف ماذا ستضع في variable وعليه تعطي خطأ

هذا الخطأ ينتقل لبرنامج الجافا ليظهر الخطأ الموجود أمامك

واضح أنك تقومين بعمل initialization للحزمة package الخاصة بك على مستوى قاعدة البيانت بحيث تحصلي على اسم مستخدم أو ما شابه

إذا كان الأمر غير ذلك فاوصفي عملك على قاعدة البيانات وسأنظر في الموضوع

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#8
mental-driller كتب:

جربي جعل السطر

jdbc:odbc:loginSystem

كالتالي

jdbc:odbc:login

الخطأ هو في هذا السطر كما ارجح

جربت لكن ظهر عندي إكسبشن ....؟؟؟

علاء الصالحي كتب:

هل تستخدمي الأسلوب

select id in variable from some_table where some_condition

إذا كنت تستخدميه فالحاصل هنا

فإنه لا يوجد أي سطر row في قاعدة البيانات يحقق الشرط

لذا فقاعدة البيانات لا تعرف ماذا ستضع في variable وعليه تعطي خطأ

هذا الخطأ ينتقل لبرنامج الجافا ليظهر الخطأ الموجود أمامك

واضح أنك تقومين بعمل initialization للحزمة package الخاصة بك على مستوى قاعدة البيانت بحيث تحصلي على اسم مستخدم أو ما شابه

إذا كان الأمر غير ذلك فاوصفي عملك على قاعدة البيانات وسأنظر في الموضوع

تحياتي

أخي أنا إستخدمت هذا السطر

String sql="select student-id,studentName from student where student-id='"+ user +"' and studentName= '" + pass +"'";

فهل هو نفس الأسلوب اللي تقصده أو لا ؟؟؟

وفي الإكسبشن ظهر عندديSERVER: null ؟؟

وياليت لو فيه طريقه غير الطريقه اللي أنا إستخدمتهاا توضحها لــي ...

#9

ممكن تطبعي لنا الاكسبشن؟

No intellectual battle was ever won through retreat
You do not watch Gintama? Dude, you are missing a lot!


صورةmsrgb1485.gif ocajavase7programmerclr.gif

#10

هذا الاكسبشن بعد ماعدلت

هذا السطر

jdbc:odbc:loginSystem

إلى

jdbc:odbc:login

كماا طلبت منــي ....

SEVERE: null
java.sql.SQLException: ??[Microsoft][ODBC Driver Manager] ???? ??? ?????? ??? ??? ???? ???????? ??? ?? ??? ????? ?????? ??????? ?????????
	at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6956)
	at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7113)
	at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(JdbcOdbc.java:3072)
	at sun.jdbc.odbc.JdbcOdbcConnection.initialize(JdbcOdbcConnection.java:323)
	at sun.jdbc.odbc.JdbcOdbcDriver.connect(JdbcOdbcDriver.java:174)
	at java.sql.DriverManager.getConnection(DriverManager.java:579)
	at java.sql.DriverManager.getConnection(DriverManager.java:243)
	at javaapplication105.login.connect(login.java:49)
	at javaapplication105.login.<init>(login.java:33)
	at javaapplication105.login.main(login.java:120)

Exception in thread "main" java.lang.NullPointerException
	at javaapplication105.login.connect(login.java:54)
	at javaapplication105.login.<init>(login.java:33)
	at javaapplication105.login.main(login.java:120)
Java Result: 1

جزااك رب خير

#11

ما نوع قاعدة البيانات ؟

No intellectual battle was ever won through retreat
You do not watch Gintama? Dude, you are missing a lot!


صورةmsrgb1485.gif ocajavase7programmerclr.gif

#12

قاعدة البيانات التي استخدمتها هي الآكسس ..

آآسفــه أخذت من وقتكم الكثيير لكن أريــد فهم الخطأ ؟؟؟

#13

على مايبدو ان المشكله في ان الداريفر الخاص بالاكسس غير متوفر

قمت ببعض البحث واستنتجت انه عليكي اما ان تزودي الكود بالمكان الخاص بقاعدة البيانات الاكسس بشكل مباشر كما في هذا الكود

import java.sql.*;
class Test
{
 public static void main(String[] args)
 {
 try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
// set this to a MS Access DB you have on your machine
String filename = "d:/java/mdbTEST.mdb";
String database = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=";
database+= filename.trim() + ";DriverID=22;READONLY=true}"; // add on to the end 
// now we can get the connection from the DriverManager
Connection con = DriverManager.getConnection( database ,"",""); 
 }
 catch (Exception e) {
System.out.println("Error: " + e);
 }
 }
}

او كما في الطريقه التي كتبتيها انت في اول مشاركه ولكن بعد اضافة الدرايفر من الكنترول بانيل

هذه الصفحه تشرح الامر

JDBC Microsoft Access

الطريقه تتضمن اضافة الداريفر من

Control Panel > Administrative Tools > Data Source(ODBC)> Add

ملاحظة تم نقل بعض الملاحظات من موقع اجنبي للفائدة

تم تعديل هذه المشاركة بواسطة mental-driller في 5 مايو 2012 في 23:09

No intellectual battle was ever won through retreat
You do not watch Gintama? Dude, you are missing a lot!


صورةmsrgb1485.gif ocajavase7programmerclr.gif

#14

رب يجزااك خير أخـــي ..

أنا سبق لي أن أضفت الدرايفر إلى الكنترول بانل بنفس الطريقه اللي قلتلي عليهاا ....

رب يوفقك ويسهل عليك

لكن ممكن كما قال الأخ علاء إنه لايوجد سطر في قاعدة البيانات يحقق هذا الشرط ؟؟؟

String sql="select student-id,studentName from student where student-id='"+ user +"' and studentName= '" + pass +"'";

لكن على العمووم سأحااااول أغير قااعدة البياانات وإذا وصلت لنتيجه بإذن الله راح أنزلها هنا بتوفيق الله ....

#15

الان المشكله عندك هي اصلا في الارتباط بقاعدة البيانات حالما يتم اصلاح هذه المشكله بعدها

نرى اذا ما كان هناك خطأ query وهذا سوف يعطيك خطأ اخر اذا ماحصل ذلك

بالتوفيق

No intellectual battle was ever won through retreat
You do not watch Gintama? Dude, you are missing a lot!


صورةmsrgb1485.gif ocajavase7programmerclr.gif

#16

طيب أخي الله يجزاك ممكن تنسخ كودي كامل وتجربه بعد إذنك على أي قاعدة بينات موجوده عندكــ ..

لكي نتأكد هل هو فيه فعلا خطأ بطريقة كتابة الكود أو لا ؟؟؟

#17

اختي لقد قمت بتجريب الكود عندي

وهذا هو الكود

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package accessdb;

import java.sql.*;

/**
 *
 * @author PsychoMantis
 */
public class AccessDB {

    public static void main(String[] args) {
        try {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
// set this to a MS Access DB you have on your machine
            String filename = "e:\\users.mdb";
            String database = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=";
            database += filename.trim() + ";DriverID=22;READONLY=true}"; // add on to the end 
// now we can get the connection from the DriverManager
            Connection con = DriverManager.getConnection(database, "", "");
            PreparedStatement stmt = con.prepareStatement("Select * FROM USERS");
            ResultSet res = stmt.executeQuery();
            while(res.next()){
                System.out.println(res.getString("ID")+" "+res.getString("name"));
            }
        } catch (Exception e) {
            System.out.println("Error: " + e);
        }
    }
}

قمت بعمل قاعدة بيانات سميتها users.mdb وحفظت الملف الى قرص E

والله شغال عندي تمام

post-244925-025107000 1336329485_thumb.j

و الكود مع البرنامج مرفق

تحياتي

Access.7z

المرفقات
Untitled-1.jpg

No intellectual battle was ever won through retreat
You do not watch Gintama? Dude, you are missing a lot!


صورةmsrgb1485.gif ocajavase7programmerclr.gif

#18

الله يجزااك خير أخـــي ...

أعتذر على التأخير بسبب ظروفــي ..

مواضيع مشابهة