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

جافا ابليت مع Mysql

بدأه اسد الاسود في 28 مارس 2009 · 6 رد · 926 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

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

import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import javax.swing.*;
import javax.swing.table.*;
import java.net.URL;
import java.sql.*;

import java.util.*;
import java.util.Properties;
import java.net.URL;
import java.sql.*;

public class yesSql extends JApplet
{
	private JTextField tfDrv = null, tfSQL = null;
	Connection conn = null;
	private Statement stmt =null;

	public yesSql() {
	}
	public void init() {
	initialize( (JPanel) getContentPane() );
	}
	public void initialize( JPanel p ) {
	p.setLayout( new BorderLayout() );

	JLabel lDrv = new JLabel( "DB Name: " );
	tfDrv = new JTextField( 25 );
	tfDrv.setText( "mysql" );

	JPanel pp = new JPanel();
	pp.setLayout( new GridLayout( 6, 2 ) );
	pp.add( lDrv );
	pp.add( tfDrv );

	JLabel lSQL = new JLabel( "SQL" );
	tfSQL = new JTextField( 25 );
	tfSQL.setText( "select * from " );
	pp.add( lSQL );
	pp.add( tfSQL );
	JButton b = new JButton( "Submit" );
	b.addActionListener( new ActionListener() {
		public void actionPerformed( ActionEvent ev ) {
		   initDB("jdbc:mysql://localhost/mysql","root","root");
			initTable( (JPanel) getContentPane() );
		}
		});
	pp.add( b );
	p.add( "North", pp );
	}
	private void initDB(String connect,String user,String pass) {
	try {
		String url = connect;
		String drv = tfDrv.getText();
//		DriverManager.registerDriver( new sun.jdbc.odbc.JdbcOdbcDriver() );

		Class.forName("org.gjt.mm.mysql.Driver");
		conn = DriverManager.getConnection( url, user, pass );//should get name, pwd

		System.out.println( "d: " + drv + ", u: " + url );
	} catch( Exception e ) {
		e.printStackTrace();
	}
	}
	public ResultSet executeSQL( String sql ) throws Exception {
	System.out.println( "DS exSQL " + sql );
	int irs = 0;
	ResultSet rs = null;
	try {

		stmt = conn.createStatement();
		boolean bo = stmt.execute("use "+ tfDrv.getText());
		if( sql.startsWith( "select" ) ) {
		rs = stmt.executeQuery( sql );
		System.out.println( "xq rs: " + rs );
		}
		else if( sql.startsWith( "delete" ) ||
			 sql.startsWith( "insert" ) ) {
		irs = stmt.executeUpdate( sql );
		}
		else if( sql.startsWith( "update" ) ) {
		irs = stmt.executeUpdate( sql );
		}
	}
	catch( Exception e ) {
		System.out.println(e.getMessage());
		e.printStackTrace();
		throw e;
	}
	return rs;
	}
	private DefaultTableModel doSQL( String sql ) {
	DefaultTableModel m = new DefaultTableModel();
	java.util.Vector data = new java.util.Vector();
	java.util.Vector headers = new java.util.Vector();
	try {
		String s = "";
		ResultSet rs = executeSQL( sql );
		System.out.println( "rs " + rs );
		ResultSetMetaData rsmd = rs.getMetaData();
		for( int c = 1, cc = rsmd.getColumnCount(); c <= cc; c++ ) {
		headers.addElement( rsmd.getColumnName( c ) );
		}
		java.util.Vector datum = null;
		while( rs.next() ) 
		{
			datum = new java.util.Vector();
			for( int c = 1, cc = rsmd.getColumnCount(); c <= cc; c++ ) {
			s = rs.getString( c );
			datum.addElement( s );
			}
			data.addElement( datum );
		}
	} catch( Exception e ) {
		e.printStackTrace();
	}
	m.setDataVector( data, headers );
	System.out.println( "d: " + data );
	return m;
	}
	private void initTable( JPanel p ) {
	DefaultTableModel dtm = doSQL( tfSQL.getText() );
	JTable tb = new JTable( dtm );
	JScrollPane sp = new JScrollPane( tb );
	JFrame fr = new JFrame();
	fr.getContentPane().add( sp );
	fr.pack();
	fr.show();
	}
	public static void main( String[] args ) {
	JFrame f = new JFrame();
	yesSql rb = new yesSql();
	JPanel p = (JPanel) f.getContentPane();
	rb.initialize( p );
	f.pack();
	f.show();
	}
}

تستطيع تجربته فقط قم بتغير اسم اليوزر للقاعدة والباسورد

initDB("jdbc:mysql://localhost/mysql","root","root");

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

قمت بالتعديل حتى وصلت هذا الكود , وهو لا يعمل ابدا مع اني قمت بوضع دالة الطباعة الا انه لا يخرج ولا كلمة واحدة ياليت المساعدة

import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import javax.swing.*;
import javax.swing.table.*;
import java.net.URL;
import java.sql.*;

import java.util.*;
import java.util.Properties;
import java.net.URL;
import java.sql.*;

public class Sql extends JApplet
{
	public String  tfDrv = null, tfSQL = null;
	//public String dbUser,dbPass;
	Connection conn = null;

	private Statement stmt =null;

	/*public Sql() {
	}*/
	public void init() {
	}

	private void initialize( String dbUser,String dbPass,String tfDrv ) {
			initDB("jdbc:mysql://localhost/mysql",dbUser,dbPass,tfDrv);
	}

	private void initDB(String connect,String user,String pass,String tfDrv) {
	try {
		String url = connect;

		this.tfDrv=tfDrv;

		Class.forName("org.gjt.mm.mysql.Driver");
		conn = DriverManager.getConnection( url, user, pass );//should get name, pwd

	} catch( Exception e ) {
		e.printStackTrace();
	}
	}

	public ResultSet executeSQL( String sql )  throws Exception {
	System.out.println( "DS exSQL " + sql );
	int irs = 0;
	ResultSet rs = null;
	try {

		stmt = conn.createStatement();
		boolean bo = stmt.execute("use "+ this.tfDrv);

		if( sql.startsWith( "select" ) ) {
		rs = stmt.executeQuery( sql );
		System.out.println( "xq rs: " + rs );
		}
		else if( sql.startsWith( "delete" ) ||
			 sql.startsWith( "insert" ) ) {
		irs = stmt.executeUpdate( sql );
		}
		else if( sql.startsWith( "update" ) ) {
		irs = stmt.executeUpdate( sql );
		}
	}
	catch( Exception e ) {
		System.out.println(e.getMessage());
		e.printStackTrace();
		throw e;
	}
	return rs;
	}

	private DefaultTableModel doSQL( String sql ) {

	DefaultTableModel m = new DefaultTableModel();
	java.util.Vector data = new java.util.Vector();
	java.util.Vector headers = new java.util.Vector();


	try {
		String s = "";
		ResultSet rs = executeSQL( sql );
		System.out.println( "rs " + rs );
		ResultSetMetaData rsmd = rs.getMetaData();

		////List datas  = new LinkedList();	
		////datas = new ArrayList(); 
		for( int c = 1, cc = rsmd.getColumnCount(); c <= cc; c++ ) {


		headers.addElement( rsmd.getColumnName( c ) );
		}
		java.util.Vector datum = null;
		while( rs.next() ) 
		{
			datum = new java.util.Vector();
			for( int c = 1, cc = rsmd.getColumnCount(); c <= cc; c++ ) {
			s = rs.getString( c );
			datum.addElement( s );

			}
			data.addElement( datum );
		}


	} catch( Exception e ) {
		e.printStackTrace();
	}
	m.setDataVector( data, headers );
	System.out.println( "d: " + data );
	return m;
	}


	public static void main( String[] args )   throws Exception{

	Sql rb = new Sql();
	ResultSet rs;
	rb.initialize( "root","root","test" );

	rb.doSQL("DELETE FROM `oop` WHERE `oop`.`java` = 2");
	//rs = rb.executeSQL("DELETE FROM `oop` WHERE `oop`.`java` = 2");
	System.out.println(rs.getString("1"));
	}
}
#2

استخدم المدقق debugger

تحياتي

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

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

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

728x90.png

#3

شكرا لك على الرد اين اجده في JCreator

#4

سلام عليكم قمت بأعادة كتابة البرنامج ومسح اكثر من نصه لتتبع الخطأ اخيرا طلع لي

Syntax error or access violation, message from server: "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.mysql.jdbc.Connection@19fcc69' at line 1"

هل يجب ان اعطي برمشن ؟؟

الغريب انه طلع لي بعد عملية الاتصال ,ما سويت اي استعلام خاطئ

		conn = DriverManager.getConnection( "jdbc:mysql://localhost/test", user, pass );

تم تعديل هذه المشاركة بواسطة اسد الاسود في 28 مارس 2009 في 16:59

#5

تم حل المشكلة الرجاء اغلاق الموضوع..

#6

أخبرنا عن حل المشكلة

هذه هي السياسة المتبعة هنا

لكي يستفيد الآخرين بزيادة المعرفة

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

تحياتي

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

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

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

728x90.png

#7

السلام عليكم

انا برأيي انه لا يجب الاتصال بقاعدة البيانات عن طريق applet وذلك لان ملفات كود ال applet سيكون متاح لدى المستخدم

وبذلك يمكنه معرفة اسم قاعدة البيانات وكلمة السر وما الى ذلك

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