نمایش نتایج 1 تا 29 از 29

نام تاپیک: ارسال متن به ديتابيس

  1. #1
    کاربر دائمی آواتار ravand
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    راوند کاشان
    پست
    3,378

    ارسال متن به ديتابيس

    ببخشيد مشكل كد من چيه؟
    package be;
    import java.io.*;
    import java.sql.*;
    import java.awt.Panel;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.Statement;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JTextField;
    import javax.swing.*;
    public class Main {
    public static void main(String [] args) {
    JFrame frame = new JFrame("ghar hisab");
    JButton b = new JButton("save");
    Panel p = new Panel();
    JTextField f = new JTextField(20);
    JTextField f1 = new JTextField(20);
    JLabel l = new JLabel("Enter the first name");
    JLabel l1 = new JLabel("Enter the first name");
    String s1,s2;


    p.add(l);
    p.add(f);
    p.add(l1);
    p.add(f1);
    p.add(b);
    frame.setSize(400,400);
    frame.setVisible(true);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOS E);
    frame.getContentPane().add(p);
    s1=f.getText();
    s2=f1.getText();
    try {

    Class.forName("org.h2.Driver");
    Connection con = DriverManager.getConnection("jdbc:h2:~/test","sa", "");
    Statement s=con.createStatement();
    s.execute("INSERT INTO std_info"+ " (FIRSTNAME,LOSTNAME)"+ " VALUES ('"+s1+"','"+s2+"')");
    s.close();
    con.close();
    } catch(Exception e){e.printStackTrace();}

    }
    }

    متشكرم.

  2. #2

    نقل قول: ارسال متن به ديتابيس

    ظاهرا مشکلی نداره.
    چه استثنایی میده؟

  3. #3
    کاربر دائمی آواتار ravand
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    راوند کاشان
    پست
    3,378

    نقل قول: ارسال متن به ديتابيس

    اين پيغام خطا رو ميده
    کد HTML:
    org.h2.jdbc.JdbcSQLException: Database may be already in use: "Locked by another process". Possible solutions: close all other connection(s); use the server mode [90020-165]
            at org.h2.message.DbException.getJdbcSQLException(DbException.java:329)
            at org.h2.message.DbException.get(DbException.java:169)
            at org.h2.message.DbException.get(DbException.java:146)
            at org.h2.store.FileLock.getExceptionAlreadyInUse(FileLock.java:439)
            at org.h2.store.FileLock.lockFile(FileLock.java:336)
            at org.h2.store.FileLock.lock(FileLock.java:128)
            at org.h2.engine.Database.open(Database.java:542)
            at org.h2.engine.Database.openDatabase(Database.java:222)
            at org.h2.engine.Database.<init>(Database.java:217)
            at org.h2.engine.Engine.openSession(Engine.java:56)
            at org.h2.engine.Engine.openSession(Engine.java:159)
            at org.h2.engine.Engine.createSessionAndValidate(Engine.java:138)
            at org.h2.engine.Engine.createSession(Engine.java:121)
            at org.h2.engine.Engine.createSession(Engine.java:28)
            at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:305)
            at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:110)
            at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:94)
            at org.h2.Driver.connect(Driver.java:72)
            at java.sql.DriverManager.getConnection(DriverManager.java:582)
            at java.sql.DriverManager.getConnection(DriverManager.java:185)
            at be.Main.main(Main.java:40)
    و فيلد ها و جدول من ايناست:
    ID,FIRSTNAME,LOSTNAME

    جدول : std_info
    اين كدها فقط يه صفحه ي خالي ميده:
    package be;
    import java.io.*;
    import java.sql.*;
    import java.awt.Panel;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.Statement;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JTextField;
    import javax.swing.*;
    public class Main {
    public static void main(String [] args) {
    JFrame frame = new JFrame("ghar hisab");
    JButton b = new JButton("save");
    Panel p = new Panel();
    JTextField f = new JTextField(20);
    JTextField f1 = new JTextField(20);
    JLabel l = new JLabel("Enter the first name");
    JLabel l1 = new JLabel("Enter the first name");
    String s1,s2;


    p.add(l);
    p.add(f);
    p.add(l1);
    p.add(f1);
    p.add(b);
    frame.setSize(400,400);
    frame.setVisible(true);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOS E);
    frame.getContentPane().add(p);
    s1=f.getText();
    s2=f1.getText();
    try {

    Class.forName("org.h2.Driver");
    Connection con = DriverManager.getConnection("jdbc:h2:~/test","sa", "");
    Statement s=con.createStatement();
    s.execute("INSERT INTO std_info"+ " (FIRSTNAME,LOSTNAME)"+ " VALUES ('"+s1+"','"+s2+"')");
    s.close();
    con.close();
    } catch(Exception e){e.printStackTrace();}

    }
    }

  4. #4
    کاربر دائمی آواتار ravand
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    راوند کاشان
    پست
    3,378

    نقل قول: ارسال متن به ديتابيس

    اون اخطاري كه براي شما گذاشتم به خاطر اجرا بودن برنامه ي h2 بود . اين كد مشكلش اينه كه ID توش نيست.
    نميدونم چجوري بايد ID رو جايگزين كرد.
    چون دائم به همين فيلد اخطار ميده. من وقتي id رو گذاشتم قبل از بقيه ي فيلد ها اين اخطار رو داد:
    org.h2.jdbc.JdbcSQLException: Column count does not match; SQL statement:
    INSERT INTO std_info (ID,FIRSTNAME,LOSTNAME) VALUES ('','') [21002-165]
    at org.h2.message.DbException.getJdbcSQLException(DbE xception.java:329)
    at org.h2.message.DbException.get(DbException.java:16 9)
    at org.h2.message.DbException.get(DbException.java:14 6)
    at org.h2.message.DbException.get(DbException.java:13 5)
    at org.h2.command.dml.Insert.prepare(Insert.java:226)
    at org.h2.command.Parser.prepareCommand(Parser.java:2 18)
    at org.h2.engine.Session.prepareLocal(Session.java:41 5)
    at org.h2.engine.Session.prepareCommand(Session.java: 364)
    at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConn ection.java:1111)
    at org.h2.jdbc.JdbcStatement.executeInternal(JdbcStat ement.java:164)
    at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.ja va:152)
    at be.Main.main(Main.java:42)

  5. #5

    نقل قول: ارسال متن به ديتابيس

    خب باید ID رو هم توی queryت Set کنی. مثل این:
    s.execute("INSERT INTO std_info"+ " (ID,FIRSTNAME,LOSTNAME)"+ " VALUES (1,'"+s1+"','"+s2+"')");

  6. #6

    نقل قول: ارسال متن به ديتابيس

    ممکنه با اجرای این کد بازم برنامه با استثنا مواجه بشه.
    اگه اینطور شد استثنا رو اینجا بذار تا بگم چیکار کنی.

  7. #7
    کاربر دائمی آواتار ravand
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    راوند کاشان
    پست
    3,378

    نقل قول: ارسال متن به ديتابيس

    امدم همونطوري كه شما گفته بوديد به فيلد ID مقدار يك دادم . بعد مطلب رو ارسال كردم ديدم كه به جاي ركورد يك مقدار خالي ارسال شده يعني ركورد يك پاك شده و هيچي توش نيست.
    بعد امدم يه شماره اي مثل 6 دادم كه همچين ركوردي ثبت شده نداشتم بازم يه مقدار خالي ارسال شده.
    package be;
    import java.io.*;
    import java.sql.*;
    import java.awt.Panel;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.Statement;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JTextField;
    import javax.swing.*;
    public class Main {
    public static void main(String [] args) {
    JFrame frame = new JFrame("ghar hisab");
    JButton b = new JButton("save");
    Panel p = new Panel();
    JTextField f = new JTextField(20);
    JTextField f1 = new JTextField(20);
    JLabel l = new JLabel("Enter the first name");
    JLabel l1 = new JLabel("Enter the first name");
    String s1,s2;
    p.add(l);
    p.add(f);
    p.add(l1);
    p.add(f1);
    p.add(b);
    frame.setSize(400,400);
    frame.setVisible(true);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOS E);
    frame.getContentPane().add(p);
    s1=f.getText();
    s2=f1.getText();
    try {
    Class.forName("org.h2.Driver");
    Connection con = DriverManager.getConnection("jdbc:h2:~/test","sa", "");
    Statement s=con.createStatement();
    s.execute("INSERT INTO std_info"+ " (ID,FIRSTNAME,LOSTNAME)"+ " VALUES (6,'"+s1+"','"+s2+"')");
    s.close();
    con.close();
    } catch(Exception e){e.printStackTrace();}
    }
    }

    و هيچ پيغامي هم جز پيغام موفقيت زير نميده:
    BUILD SUCCESSFUL (total time: 17 seconds)

    من بايد يه كاري كنم كه فيلد آي دي خودش اتوماتيك مقدار بگيره نه اينكه من خودم دستي يه مقدار بهش بدم.

  8. #8
    کاربر دائمی آواتار ravand
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    راوند کاشان
    پست
    3,378

    نقل قول: ارسال متن به ديتابيس

    فراموش كرده بودم AUTO_INCREMENT رو هم بنويسم. كدهاي ساخت فيلد ها و جدولم اين شد:
    کد HTML:
    CREATE TABLE std_info
    (
    ID int NOT NULL AUTO_INCREMENT,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255) NOT NULL,
    PRIMARY KEY (ID)
    )
    ولي هنوز مقادير خالي به جدول ارسال ميشه . و مشكل من حل نشده.

  9. #9

    نقل قول: ارسال متن به ديتابيس

    من نمیدونم چرا مقدار خالی به دیتا بیس ارسال میشه.
    و لی شما الآن دارید از حالت Server برای H2 استفاده می کنید. پیشنهاد میکنم که از حالت embedded برای H2 استفاده کنید.شاید مشکل حل بشه.
    با این کار فایل های دیتا بیس در کنار پروژه ساخته میشه.
    در مثال زیر اول یه دیتا بیس ساخته و بهش وصل میشیم. بعد یه جدول میسازیم و یه رکورد به جدول اضافه می کنیم.

     Class.forName("org.h2.Driver");
    connection = DriverManager.getConnection("jdbc:h2:DatabaseName" , "", "");
    st = connection.createStatement();
    st.execute("CREATE TABLE std_info(ID int NOT NULL AUTO_INCREMENT"
    + ",LastName varchar(255) NOT NULL"
    + ",FirstName varchar(255) NOT NULL"
    + ",PRIMARY KEY (ID))");
    st.executeQuery("insert into std_info values(1,'hamid','omidi')");

  10. #10
    کاربر دائمی آواتار ravand
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    راوند کاشان
    پست
    3,378

    نقل قول: ارسال متن به ديتابيس

    خب اين كاري كه شما كرديد يك بار جدول با فيلد هاش ايجاد ميشه و يه بارم مقادير زير وارد ميشه:
    کد HTML:
    1,'hamid','omidi'
    من ميخوام هر وقت كه خواستم بتونم مقاديرم رو به جدول وارد كنم.
    شما با كد بالا هر بار ميخواي جدول رو ايجاد كنه . ولي ما يه بار فقط ميخوايم جدول رو ايجاد كنيم. و هر بار ميخوايم مقدار ديگري رو به غير از مقادير 1,'hamid','omidi' رو به جدول وارد كنيم.

  11. #11
    کاربر دائمی آواتار ravand
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    راوند کاشان
    پست
    3,378

    نقل قول: ارسال متن به ديتابيس

    امدم id رو از ديتابيس هم حذف كردم بازم مقدار خالي ارسال ميكنه:
    package be;
    import java.io.*;
    import java.sql.*;
    import java.awt.Panel;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.Statement;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JTextField;
    import javax.swing.*;
    public class Main {
    public static void main(String [] args) {
    JFrame frame = new JFrame("ghar hisab");
    JButton b = new JButton("save");
    Panel p = new Panel();
    JTextField f = new JTextField(20);
    JTextField f1 = new JTextField(20);
    JLabel l = new JLabel("Enter the first name");
    JLabel l1 = new JLabel("Enter the first name");

    p.add(l);
    p.add(f);
    p.add(l1);
    p.add(f1);
    p.add(b);
    frame.setSize(400,400);
    frame.setVisible(true);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOS E);
    frame.getContentPane().add(p);
    String s1,s2;
    s1=f.getText();
    s2=f1.getText();
    try {
    Class.forName("org.h2.Driver");
    Connection con = DriverManager.getConnection("jdbc:h2:~/test","sa", "");
    Statement s=con.createStatement();
    s.execute("INSERT INTO std_info"+ " (LastName,FirstName)"+ " VALUES ('"+s1+"','"+s2+"')");
    s.close();
    con.close();
    } catch(Exception e){e.printStackTrace();}
    }
    }


    جدول:
    کد HTML:
    CREATE TABLE std_info
    (
    LastName varchar(255) NOT NULL,
    FirstName varchar(255) NOT NULL
    )

  12. #12

    نقل قول: ارسال متن به ديتابيس

    حقیقتش من نمیتونم بفهمم چرا اینشکلی میشه.
    ولی این اینم یه کد برای اینکه هر دفعه جدول ایجاد نشه.

    try {
    File db = new File("Data\\YourDatabase.h2.db");
    Class.forName("org.h2.Driver");
    if (!db.exists()) {
    connection = DriverManager.getConnection("jdbc:h2:Data\\YourDat abase", "", "");
    st = connection.createStatement();
    st.execute("CREATE TABLE notepad(ID INT PRIMARY KEY, title VARCHAR(255), text TEXT,date TEXT,time text)");

    } else {
    connection = DriverManager.getConnection("jdbc:h2:Data\\YourDat abase", "", "");
    st = connection.createStatement();
    }

  13. #13
    کاربر دائمی آواتار ravand
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    راوند کاشان
    پست
    3,378

    نقل قول: ارسال متن به ديتابيس

    اين چيزي كه شما نوشتي مقداري رو از فرم دريافت نميكنه .
    من چيزي ميخوام كه مقداري رو از فرم دريافت كنه و به ديتابيس ارسال كنه . در واقع ميخوام كه دو تا تكست داشته باشيم كه متن توش بنويسيم و به ديتابيس ارسالش كنيم.
    اين كد چيزي هست كه من نوشتم و مقداري رو از فرم دريافت نميكنه .
    package be;
    import java.io.*;
    import java.sql.*;
    public class Main {
    public static void main(String[] args) {
    try {
    Connection con=null;
    Class.forName("org.h2.Driver");
    con=DriverManager.getConnection("jdbc:h2:~/test","sa","");
    Statement s=con.createStatement();
    s.execute("INSERT INTO std_info"+ " (ID, FIRSTNAME,LOSTNAME)"+ " VALUES (4, 'ali', 'ahmad')");
    s.close();
    con.close();
    } catch(Exception e){e.printStackTrace();}
    }
    }

  14. #14

    نقل قول: ارسال متن به ديتابيس

    خب همینطوری که متن از فرم نمیاد بره توی دیتابیس. باید مقدار رو از ازش بگیری دیگه.
    مثلا از یه TextField با نام txfName باید اینطوری مقدارشو بگیری:
    String name = TXFName.getText();

  15. #15
    کاربر دائمی آواتار ravand
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    راوند کاشان
    پست
    3,378

    نقل قول: ارسال متن به ديتابيس

    خب اين يعني شما به كدهاي من دقت نكرديد . يه بار ديگه نگاش كنيد.
    اين كدها رو ببينيد . همون كاري هست كه شما ميگيد:
        JTextField f = new JTextField(20);
    JTextField f1 = new JTextField(20);
    s1=f.getText();
    s2=f1.getText();

  16. #16

    نقل قول: ارسال متن به ديتابيس

    خب پس دیگه مشکل چیه؟
    اینکه اطلاعات خالی به دیتابیس ارسال میشه؟
    خب شما با اون روشی که من گفتم به دیتابیس وصل بشید، شاید درست شد.

  17. #17
    کاربر دائمی آواتار ravand
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    راوند کاشان
    پست
    3,378

    نقل قول: ارسال متن به ديتابيس

    خب اون روشي هم كه شما انجام ميدي رو من گفتم براي چي نميتونم استفاده كنم.
    اگه ميشه اين روش من رو شما تست كنيد ببينيد جواب ميده يا نه؟
    متشكرم.

  18. #18

    نقل قول: ارسال متن به ديتابيس

    من همه ی روش ها رو امتحان کردم و مشکلی نبوده.

  19. #19
    کاربر دائمی آواتار ravand
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    راوند کاشان
    پست
    3,378

    نقل قول: ارسال متن به ديتابيس

    يعني شما دقيقا اين كد منو تست كرديد مشكلي نداشت؟
    package be;
    import java.io.*;
    import java.sql.*;
    import java.awt.Panel;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.Statement;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JTextField;
    import javax.swing.*;
    public class Main {
    public static void main(String [] args) {
    JFrame frame = new JFrame("ghar hisab");
    JButton b = new JButton("save");
    Panel p = new Panel();
    JTextField f = new JTextField(20);
    JTextField f1 = new JTextField(20);
    JLabel l = new JLabel("Enter the first name");
    JLabel l1 = new JLabel("Enter the first name");

    p.add(l);
    p.add(f);
    p.add(l1);
    p.add(f1);
    p.add(b);
    frame.setSize(400,400);
    frame.setVisible(true);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOS E);
    frame.getContentPane().add(p);
    String s1,s2;
    s1=f.getText();
    s2=f1.getText();
    try {
    Class.forName("org.h2.Driver");
    Connection con = DriverManager.getConnection("jdbc:h2:~/test","sa", "");
    Statement s=con.createStatement();
    s.execute("INSERT INTO std_info"+ " (LastName,FirstName)"+ " VALUES ('"+s1+"','"+s2+"')");
    s.close();
    con.close();
    } catch(Exception e){e.printStackTrace();}
    }
    }

    چه دليلي ممكنه داشته باشه كه براي من كار نكنه؟
    من يادمه يه همچين مشكلي رو توي كدنويسي php داشتم ولي يادم نيست چجوري حل شد.

  20. #20
    کاربر دائمی آواتار ravand
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    راوند کاشان
    پست
    3,378

    نقل قول: ارسال متن به ديتابيس

    ما توي php يه دستوري داريم به نام:
    or die(mysql_error()

    كه اگه هر مشكلي در كار پيش بياد به ما اطلاع ميده توي جاوا بايد از چي استفاده كنم؟
    مثلا اين كد php رو نگاه كنيد براي انتخاب فيد هاي جدول هست:
    $Q=mysql_query("SELECT * FROM `posts`") or die(mysql_error()); 

    اگه مشكلي در حين انتخاب پيش بياد اخطار ميده ، اگه نمونه اي از همين دستور توي جاوا باشه شايد بتونه به من كمك كنه

  21. #21

    نقل قول: ارسال متن به ديتابيس

    توی جاوا Exception وجود داره و با بلاک های try و Catch مدیریت میشن. یعنی Error نداریم.
    با e.printStackTrace() هم میتونی بفهمی مشکل از کجاست. البته فقط استثنا ها رو میفهمی.
    اگر StackTrace مربوط به استثنا ، توی خروجی چاپ نمیشه، معلوم میشه که اصلا استثنا وجود نداره و توی اجرای دستورات هیچ مشکلی نیست.
    اشکال هر چی هست از طرف خود شماس. حالا شاید توی آدرس دهی مسیر دیتابیس یه جا مشکل هست.این فقط یه حدسه.

  22. #22
    کاربر دائمی آواتار ravand
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    راوند کاشان
    پست
    3,378

    نقل قول: ارسال متن به ديتابيس

    فكر نكنم كه با Exception باشه. چون ما در php هم يه بحثي با عنوان استثناعات داريم.
    در مورد اتصال به بانك هم بايد بگم كه مشكلي وجود نداره چون من با كد قبلي كه بهتون دادم و نياز به فرم نداشت تونستم مقادير رو به ديتابيس ارسال كنم ولي اين كدي كه فرم داره نميتونه مقادير رو به ديتابيس ارسال كنه. پس نتيجه ميگيريم كه مشكل از ارسال مقادير از فرم به ديتابيس هست.
    همين كدهايي كه بهتون دادم رو من برداشتم و اين مقادير رو بهش اضافه كردم .
     f.setText("ali");
    f1.setText("mohammad");

    با اين كار مقدار ali و mohammad به جدول در بانك اطلاعاتي اضافه شده در صورتي كه قبلا فقط فضاي خالي ارسال ميشد.
    كدهاي من اين شكلي شد.
    package be;
    import java.io.*;
    import java.sql.*;
    import java.awt.Panel;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.Statement;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JTextField;
    import javax.swing.*;
    public class Main {
    public static void main(String [] args) {
    JFrame frame = new JFrame("ghar hisab");
    JButton b = new JButton("save");
    Panel p = new Panel();
    JTextField f = new JTextField(20);
    JTextField f1 = new JTextField(20);
    JLabel l = new JLabel("Enter the first name");
    JLabel l1 = new JLabel("Enter the first name");

    p.add(l);
    p.add(f);
    p.add(l1);
    p.add(f1);
    p.add(b);
    frame.setSize(400,400);
    frame.setVisible(true);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOS E);
    frame.getContentPane().add(p);
    f.setText("ali");
    f1.setText("mohammad");
    String s1=f.getText();
    String s2=f1.getText();

    try {
    Class.forName("org.h2.Driver");
    Connection con = DriverManager.getConnection("jdbc:h2:~/test","sa", "");
    Statement s=con.createStatement();
    s.execute("INSERT INTO std_info"+ " (LastName,FirstName)"+ " VALUES ('"+s1+"','"+s2+"')");
    s.close();
    con.close();
    } catch(Exception e){e.printStackTrace();}
    }
    }

    پس بايد ببينيم كه مشكل ارسال اطلاعات چيه؟
    شايد من حروف بزرگ و كوچك رو رعايت نميكنم .
    صد در صد يه اشكال جزئي در كار هست . مي تونيد يه نگاهي به كدها بكنيد؟
    متشكرم.

  23. #23
    کاربر دائمی آواتار ravand
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    راوند کاشان
    پست
    3,378

    نقل قول: ارسال متن به ديتابيس

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

  24. #24

    نقل قول: ارسال متن به ديتابيس

    تازه فهمیدم مشکل چیه.

    من فکر میکردم شما یه قسمت از کدهاتون رو اینجا گذاشتید. ولی اشتباه می کردم شما همهی کدی رو که دارید رو اینجا گذاشتی. چه مشکل بدیهی ای.

    مشکل کد قبلی شما که توی دیتابیس مقدار خالی ست می شد این بود که، موقعی که اطلاعات داره به دیتا بیس فرستاده میشه، TextField هات هیچ مقداری توش نیست.
    یعنی شما باید یه دکمه بذاری، تا وقتی روی دکمه کلیک میکنی، اطلاعات توی دیتابیس ست بشه. یعنی باید به متغییر b که یه JButton هست، یه ActionListener اضافه کنی و کدهایی که مربوط به فرستادن اطلاعات به دیتابیس هست رو توی این ActionListener بنویسی.
    به همین راحتی.

    مثل این:
    b.addActionListener(new ActionListener() {

    @Override
    public void actionPerformed(ActionEvent e) {
    try {
    Class.forName("org.h2.Driver");
    Connection con = DriverManager.getConnection("jdbc:h2:~/test", "sa", "");
    Statement s = con.createStatement();
    s.execute("INSERT INTO std_info" + " (LastName,FirstName)" + " VALUES ('" + f.getText() + "','" + f1.getText() + "')");
    s.close();
    con.close();
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    });

  25. #25

    نقل قول: ارسال متن به ديتابيس

    البته اگه این خط رو اول متد بنویسی بهتره:
    Class.forName("org.h2.Driver");

  26. #26
    کاربر دائمی آواتار ravand
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    راوند کاشان
    پست
    3,378

    نقل قول: ارسال متن به ديتابيس

    بله حق با شماست . اصلا فكر نكردم كه بايد با يه چيزي مثل action كه توي html مقصد فرم رو مشخص ميكردم اينجا هم بايد مقصد رو معين كنم.
    الان اين كل كدهاي منه :
    package be;
    import java.io.*;
    import java.sql.*;
    import java.awt.Panel;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.Statement;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JTextField;
    import javax.swing.*;
    public class Main {
    public static void main(String [] args) {
    JFrame frame = new JFrame("onvan");
    Panel p = new Panel();
    JButton b = new JButton("save");
    JTextField f = new JTextField(20);
    JTextField f1 = new JTextField(20);
    JLabel l = new JLabel("Enter the first name");
    JLabel l1 = new JLabel("Enter the first name");

    p.add(l1);
    p.add(l);
    p.add(f1);
    p.add(f);
    p.add(b);
    frame.setSize(400,400);
    frame.setLocationRelativeTo(null);
    frame.setVisible(true);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOS E);
    frame.getContentPane().add(p);

    String s1=f.getText();
    String s2=f1.getText();
    b.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    try {
    Class.forName("org.h2.Driver");
    Connection con = DriverManager.getConnection("jdbc:h2:~/test","sa", "");
    Statement s=con.createStatement();
    s.execute("INSERT INTO std_info"+ " (LastName,FirstName)"+ " VALUES ('"+s1+"','"+s2+"')");
    s.close();
    con.close();
    } catch(Exception e){e.printStackTrace();}
    }
    }
    }
    }

    كاش شما هم كل كدهاتون رو براي من ميذاشتيد . چون من مبتدي هستم و گيج ميشم . الان كدهاي بالا كار نميكنه و من نميدونم چه اشتباهي دارم.
    متشكرم.

  27. #27

    نقل قول: ارسال متن به ديتابيس

    اینم یه کد که کامل کار میکنه و فکر کنم اصولی باشه:
    import java.awt.FlowLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import java.sql.Statement;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JOptionPane;
    import javax.swing.JTextField;

    public class TestDB extends JFrame {

    private JButton addDB;
    private JTextField tx1, tx2;

    public TestDB() {
    super("Test Dabatbase");
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    try {
    Class.forName("org.h2.Driver");
    } catch (ClassNotFoundException ex) {
    ex.printStackTrace();
    }

    tx1 = new JTextField();
    tx1.setColumns(10);

    tx2 = new JTextField();
    tx2.setColumns(10);

    addDB = new JButton("Click to add");
    addDB.addActionListener(new ActionListener() {

    @Override
    public void actionPerformed(ActionEvent e) {
    try {
    Connection con = DriverManager.getConnection("jdbc:h2:~/test", "sa", "");
    Statement s = con.createStatement();
    s.execute("INSERT INTO std_info" + " (LastName,FirstName)" + " VALUES ('" + tx1.getText()
    + "','" + tx2.getText() + "')");
    s.close();
    con.close();

    JOptionPane.showMessageDialog(null, "one row added", "ok", JOptionPane.INFORMATION_MESSAGE);
    } catch (SQLException ex) {
    ex.printStackTrace();
    }
    }
    });

    add(tx1);
    add(tx2);
    add(addDB);
    }

    public static void main(String args[]) {
    TestDB testdb = new TestDB();
    testdb.setLayout(new FlowLayout(FlowLayout.CENTER));
    testdb.setSize(160, 130);
    testdb.setVisible(true);
    }
    }

  28. #28
    کاربر دائمی آواتار ravand
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    راوند کاشان
    پست
    3,378

    نقل قول: ارسال متن به ديتابيس

    ببخشيد نميدونم چرا اين اخطار رو بهم ميده:
    کد HTML:
    init:
    deps-jar:
    compile:
    run:
    java.lang.ClassNotFoundException: org.h2.Driver
            at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
            at java.security.AccessController.doPrivileged(Native Method)
            at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
            at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
            at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
            at java.lang.Class.forName0(Native Method)
            at java.lang.Class.forName(Class.java:169)
            at po.TestDB.<init>(TestDB.java:24)
            at po.TestDB.main(TestDB.java:61)
    BUILD SUCCESSFUL (total time: 12 seconds)

  29. #29

    نقل قول: ارسال متن به ديتابيس

    بازم باید فایل دیتابیس H2 رو به برنامه اضافه کنی. بهت گفتم توی NetBeans چطوری باید این کار رو بکنی.
    آخرین ویرایش به وسیله spiderman200700 : دوشنبه 18 اردیبهشت 1391 در 10:56 صبح

تاپیک های مشابه

  1. ارسال متن به textBox
    نوشته شده توسط amir_king2_2 در بخش C#‎‎
    پاسخ: 4
    آخرین پست: چهارشنبه 17 فروردین 1390, 19:44 عصر
  2. ارسال متن به Word
    نوشته شده توسط salman_s در بخش برنامه نویسی در 6 VB
    پاسخ: 1
    آخرین پست: یک شنبه 02 بهمن 1384, 15:10 عصر
  3. ارسال متن به دیگر برنامه ها از دلفی از جمه برنامه Notepad
    نوشته شده توسط دنی کوئیل در بخش برنامه نویسی در Delphi
    پاسخ: 1
    آخرین پست: دوشنبه 30 آبان 1384, 22:15 عصر
  4. ارسال متن به Flash در زمان اجرا
    نوشته شده توسط ehsane در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 1
    آخرین پست: پنج شنبه 09 تیر 1384, 02:02 صبح
  5. ارسال متن به sql
    نوشته شده توسط dalaho در بخش C#‎‎
    پاسخ: 1
    آخرین پست: دوشنبه 19 بهمن 1383, 16:21 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •