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

درس: كيفية استخدام Oracle thin driver بالبرامج

مغلق
بدأه صلاح الثبيتي في 15 أبريل 2003 · 12 رد · 1,660 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم :)

اي شخص يستخدم الجافا مع قواعد بيانات الاوراكل .. يستطيع الاستفاده من هذا الدرس ..

بالبدايه:

يجب امتلاك Oracle database على نفس الجهاز او على السيرفر :)

اولاً:

C:oracleora92jdbclib

تلقى بهذا المجلد: ملف مضغوط اسمه classes12.zip قم بفك ضفط الملف في نفس مجلد برنامج الجافا اللي تشتغل عليه،، راح تحصل على مجلد اسمه oracle و هذا هو المطلوب .. المجلدات الاخرى مثل swing و غيرها .. احذفها لأننا ما راح نحتاج لها .. فقط نحتاج مجلد oracle

طيب الحين.. نكتب الكود المطلوب:

import java.sql.*;

public class Oracle{
	public static void main(String[] args){
		Connection connection;
		Statement statement;
		ResultSet result;
		try{
			Class.forName("oracle.jdbc.OracleDriver");
		}
		catch(ClassNotFoundException ea){
			System.out.println(ea.toString());
		}
		catch(Exception e){
			System.out.println(e.toString());
		}
		try{
			connection = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ORCL","scott","tiger");
			statement  = connection.createStatement();
			result = statement.executeQuery("select ename, job from emp");
			while(result.next()){
				System.out.println(result.getString("ename") + "t" + result.getString("job"));
			}
			result.close();
			statement.close();
			connection.close();
		}
		catch(SQLException e){
			System.out.println(e.toString());
		}
	}
}

هذا برنامج صغير كامل للتأكد من الاعدادات .. راح تطلع لكل شاشه دوس و فيها البيانات المطلوبه اللي هي موجوده باحدى الجداول بالاوراكل ..

بالنسبه للسطر:

connection = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ORCL","scott","tiger");

localhost = نكتبه اذا كانت قاعدة البيانات على نفس الجهاز او نكتب الـ IP للسيرفر (السيرفر اللي موجوده فيه قاعدة البيانات)

1521 = هذا رقم البورت و هو الافتراضي ..

ORCL = هذا اسم الـ SID لقاعدة البيانات للاوراكل ..

scott/tiger هذا اسم المستخدم و الباسوورد :)

و ان شاء الله يكون الدرس مفهوم و بشكل مختصر :) :)

اخوكم : صلاح الثبيتي

#2

مشكور على الدرس ولكن هناك أسئلة وهي :

1- ياليت توضح متى نستخدم الدرايفر thin ومتى نستخدم غيرة ( oci,oci8,oci7 ).

2-كيف أصل الى قاعدة بيانات الاوراكل إذا كنت في برنامج servlet او jsp هل بنفس الطريقة أم ماذا .

3-قمت بنفس الخطوات سابقا وانا محمل الاوراكل ثمانية على جهازي ( طبعا النسخة الشخصية personal ولكن مع الاسف استطعت ان اتصل بالاوراكل وقدرت اني ارى جدوال الاوراكل catalog ولكني لم أرى قاعدة بياناتي علما أنني مسجل كا مسئول administrator بكلمة مرور SYS وباسورد هي b

المهم مالمشكلة وشكر صلاح واسف على الاطالة :o

#3

للرفع

#4

السلام عليكم :)

اسف على التأخير:

اقتباس
1- ياليت توضح متى نستخدم الدرايفر thin ومتى نستخدم غيرة ( oci,oci8,oci7 ).

انا ما جربت اللا thin و الربط بين obbc-jdbc اما الباقي ما اعرف عنه اي معلومات

اقتباس
2-كيف أصل الى قاعدة بيانات الاوراكل إذا كنت في برنامج servlet او jsp هل بنفس الطريقة أم ماذا .

اعتقد ايه ... لكن مش متأكد

اقتباس
3-قمت بنفس الخطوات سابقا وانا محمل الاوراكل ثمانية على جهازي ( طبعا النسخة الشخصية personal ولكن مع الاسف استطعت ان اتصل بالاوراكل وقدرت اني ارى جدوال الاوراكل catalog ولكني لم أرى قاعدة بياناتي علما أنني مسجل كا مسئول administrator بكلمة مرور SYS وباسورد هي b

المهم مالمشكلة وشكر صلاح واسف على الاطالة

ياليت لو يكون في كود عشان اعرف وين المشكله :)

#5

مشكور أخوي صلاح الكود والله ما أدري وينة لكنة بالضبط مثل هذا اللهم اني غير اسم الدرايف واستدعيت package الاوراكل :

import java.sql.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;
import java.util.Vector;
import java.util.Date;
import javax.swing.event.*;
import javax.accessibility.*;


public class Untitled1 extends JFrame{
private Container container;
private JTable table;
private JTextArea textArea;
private JSplitPane splitPane;
private JPanel panel;
private JScrollPane scrollPane;
private JButton executeQuery;
  private Connection connection;
  private Statement statement;
  private ResultSet resultSet,temp;
  private ResultSetMetaData metaData;
  private DefaultTableModel tableModel;
  private Vector vector;
  private MouseHandler mh;
  private Action executeQ,clearQ,exit,about;
  private JPopupMenu popup;
  private MousePopup hp;
  private JLabel label;
 private JPanel mainPanel;
 private DatabaseMetaData dM;



 public Untitled1() {
   super("Query Compiler");

          String name = "";
     final JFrame frame = new JFrame("Connection :");
     Container container1 = frame.getContentPane();
     JLabel label1 = new JLabel(" Database name :",SwingConstants.CENTER);
     JLabel label2 = new JLabel(" User name :",SwingConstants.CENTER);
     JLabel label3 = new JLabel(" Password :",SwingConstants.CENTER);
     final JTextField textfield1 = new JTextField(17);
     final JTextField textfield2 = new JTextField(17);
     final JPasswordField textfield3 = new JPasswordField(17);
        mh=new MouseHandler();
        hp = new MousePopup();
     JPanel p = new JPanel(new GridLayout(3, 2));
     label =new JLabel();
     p.add(label1);
     p.add(textfield1);
     p.add(label2);
     p.add(textfield2);
     p.add(label3);
     p.add(textfield3);
     JButton conn = new JButton("Connect");

     frame.getRootPane().setDefaultButton(conn);
   conn.addMouseListener(mh);
   p.setBorder(BorderFactory.createEmptyBorder(5,0,35,5));
     container1.add(p, BorderLayout.CENTER);
     JPanel pa = new JPanel();
     pa.add(conn);
     container1.add(pa, BorderLayout.SOUTH);
     frame.setLocation(300, 100);
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                    frame.setResizable(false);


     frame.pack();
     frame.setVisible(true);
     //DriverManager.registerDriver(new JdbcOdbcDriver());
     conn.addActionListener(new ActionListener() {
       public void actionPerformed(ActionEvent e) {
         try {
           Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
           if(textfield2.getText().equals(""))

           connection = DriverManager.getConnection("jdbc:odbc:" +textfield1.getText());

          else
          connection = DriverManager.getConnection("jdbc:odbc:" +
              textfield1.getText() , textfield2.getText() , new String(textfield3.getPassword()));


        frame.setVisible(false);

         //  statement = connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
          statement = connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);

           container = getContentPane();
           mainPanel = new JPanel(new BorderLayout());

           container.setLayout(new BorderLayout());

           textArea = new JTextArea();

           tableModel = new DefaultTableModel();
           table = new JTable(tableModel);

           scrollPane = new JScrollPane(table);
           JScrollPane textScroll = new JScrollPane(textArea);


           splitPane = new JSplitPane(splitPane.VERTICAL_SPLIT, textScroll,
                                      scrollPane);
           splitPane.setDividerLocation(160);
           executeQuery = new JButton();
           executeQuery.setMnemonic('E');

           executeQuery.addMouseListener(mh);

           JButton clear = new JButton();
           clear.setMnemonic('C');
           clear.addMouseListener(mh);


           panel = new JPanel(new BorderLayout());
           clearQ = new AbstractAction(){
             public void actionPerformed(ActionEvent event)
             {
               textArea.setText("");
               executeQ.setEnabled(false);
               tableModel.setRowCount(0);
                 tableModel.setColumnCount(0);
                 label.setText("");

             }
           };
           clearQ.putValue(Action.NAME,"Clear");
           clearQ.putValue(Action.SHORT_DESCRIPTION,"click here to clear text area");
           clearQ.putValue(Action.MNEMONIC_KEY,new Integer('C'));


          clear.setAction(clearQ);
          JPanel pq=new JPanel();
          pq.add(clear);
          pq.add(executeQuery);

           panel.add(pq,BorderLayout.CENTER);



           Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
           setLocation(300, 100);

                      table.setEnabled(false);
           executeQ = new AbstractAction(){
                        private int counter = 0;

             public void actionPerformed(ActionEvent event) {
               DefaultTableModel mo = new DefaultTableModel();
               try {

                 check();

                 resultSet = statement.executeQuery(textArea.getText());


                 metaData = resultSet.getMetaData();



                 int columnCount = metaData.getColumnCount();
                 // JOptionPane.showMessageDialog(null,"" + resultSet.isLast());



                   for (int i = 1; i <= columnCount; i++)
                     tableModel.addColumn(metaData.getColumnName(i));



                 String data[] = new String[columnCount];
                 for (int i = 0; i < data.length; i++) {
                   data = new String();
                   data = "";
                 }



                 while (resultSet.next()) {

                   for (int i = 1; i <= columnCount; i++) {
                     data[i - 1] = "" + resultSet.getObject(i);

                   }

                   tableModel.addRow(data);

                 }
                 resultSet.first();
                 if(resultSet.getRow() != 0)
                    label.setText("Success");
                    else
                      label.setText("not founded");





               }
               catch (SQLException ex) {
                 JOptionPane.showMessageDialog(Untitled1.this, ex.getMessage(), "ERROR:",
                                               JOptionPane.ERROR_MESSAGE);
                 label.setText("Failed");
               }

             }

             public void check() {


                 tableModel.setRowCount(0);
                 tableModel.setColumnCount(0);


             }

           };
      executeQ.putValue(Action.NAME,"Execute Query");
      executeQ.putValue(Action.SHORT_DESCRIPTION,"click to execute written query");
      executeQ.putValue(Action.MNEMONIC_KEY,new Integer('E'));
        executeQ.setEnabled(false);
      executeQuery.setAction(executeQ);
      exit = new AbstractAction(){
        public void actionPerformed(ActionEvent e)
        {
          try {
               statement.close();
               connection.close();
             }
             catch (Exception ex) {
               ex.printStackTrace();
             }
             System.exit(0);

        }
      };
        exit.putValue(Action.SHORT_DESCRIPTION,"Click to go out");
        exit.putValue(Action.NAME,"Exit");




         addWindowListener(new WindowAdapter() {
           public void windowClosing(WindowEvent ee) {

             try {
               statement.close();
               connection.close();
             }
             catch (Exception ex) {
               ex.printStackTrace();
             }
             System.exit(0);

           }

         });
         textArea.addCaretListener(new CaretListener(){

         public void caretUpdate(CaretEvent e)
         {
           if( ! textArea.getText().equals(""))
             executeQ.setEnabled(true);


           else
             executeQ.setEnabled(false);



         }




         });
          popup = new JPopupMenu();
                popup.add(executeQ);
                 popup.add(clearQ);

                  addMouseListener(hp);
                  panel.addMouseListener(hp);
                  textArea.addMouseListener(hp);
                    scrollPane.addMouseListener(hp);

             label.setHorizontalAlignment(SwingConstants.RIGHT);

             label.setForeground(Color.decode("102"));
             panel.add(label,BorderLayout.SOUTH);


         container.add(splitPane, BorderLayout.CENTER);
        container.add(panel, BorderLayout.SOUTH);
                    JMenu file = new JMenu("File"),help = new JMenu("Help");
                    about = new AbstractAction(){
                      public void actionPerformed(ActionEvent event)
                      {
                        JLabel label1 = new JLabel(),label2=new JLabel();;
                        JPanel pp = new JPanel(new BorderLayout());

                        label1.setText("All rights is reserved for Bader Omair");
                        label1.setHorizontalAlignment(SwingConstants.CENTER);
                        label1.setForeground(Color.BLUE);
                        pp.add(label1,BorderLayout.CENTER);
                        label2.setText("baderyy@hotmail.com");
                        label2.setHorizontalAlignment(SwingConstants.CENTER);
                        label2.setForeground(Color.white);
                        pp.add(label2,BorderLayout.SOUTH);



                        JOptionPane.showMessageDialog(Untitled1.this,pp);

                      }

                    };
                    about.putValue(Action.NAME,"About...");



            help.add(about);
            help.setMnemonic('H');
           file.add(executeQ);
           file.add(clearQ);
           file.setMnemonic('F');


           file.add(exit);

           JMenuBar bar = new JMenuBar();
           bar.add(file);
           bar.add(help);
           bar.setBorder(BorderFactory.createEmptyBorder());
         container.add(bar,BorderLayout.NORTH);



        pack();



           setVisible(true);





         }

           catch(Exception ec){
             ec.printStackTrace();
      JOptionPane.showMessageDialog(Untitled1.this,ec.getMessage() );


    }
      }});


  }
  private class MouseHandler extends MouseAdapter {
    public void mouseEntered(MouseEvent e)
    {
       e.getComponent().setCursor(new Cursor(Cursor.HAND_CURSOR));
       e.getComponent().setForeground(Color.white);
    }
    public void mouseExited(MouseEvent e)
    {
       e.getComponent().setForeground(Color.black);
    }
  }
  /**************************************/
  private class MousePopup extends MouseAdapter {
    public void mousePressed(MouseEvent e)
    {
       check(e);
    }
    public void mouseReleased(MouseEvent e)
    {
       check(e);
    }
    public void check(MouseEvent e)
    {
      if(e.isPopupTrigger())
      {
        popup.show(e.getComponent(),e.getX(),e.getY());


      }
    }
  }

  /***************************************/
  public static void main(String[] args) {



    try{
      UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
      SwingUtilities.updateComponentTreeUI(new Untitled1());
    }catch(Exception e){

    JOptionPane.showMessageDialog(null,"" + e.getStackTrace());
    }




   }

}

لاحظ البرنامج متاكد انا انة متصل بلاوراكل لاني اشوف جداول الاوراكل ولكن المشكلة الجداول ( قاعدة البيانات) التي هي من انشائي لا استطيع الوصول اليها علما انني ادخل بكلمة SYS وباسورد من إنشائي وشكرا

#6

لاحظ ان PHP غيرت الكود قليلا لذلك جعلت علامة النقطتين : الى

#7

لاحظ ان PHP غيرت الكود قليلا فصارت علامة النقطتين : الى

#8

لاحظ ان PHP غيرت الكود قليلا فصارت علامة النقطتين : الى

#9

ماعليش حصل خطا وتكررت الردود ارجوا من المشرفين حذف التكرار وشكر :D:o

#10

عشان تضبط الكود .. عند كتابة الرد ..

علم بعلامه الصح الجمله: "عدم اظهار الابتسامات بالمشاركه"

:D

#11

شكرا لك ابو صلوح --_- واحد يموووووووووووووون

لكن ابي الجواب على الكووووووووووووووود :D:D:D

#13

:D:D:D:D

اقتباس
-قمت بنفس الخطوات سابقا وانا محمل الاوراكل ثمانية على جهازي ( طبعا النسخة الشخصية personal ولكن مع الاسف استطعت ان اتصل بالاوراكل وقدرت اني ارى جدوال الاوراكل catalog ولكني لم أرى قاعدة بياناتي علما أنني مسجل كا مسئول administrator بكلمة مرور SYS وباسورد هي b

المهم مالمشكلة وشكر صلاح واسف على الاطالة

هذا الموضوع مغلق.

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…