Передача параметров из flex в базу данных с использованием java

#java #apache-flex #postgresql #flex4 #blazeds

#java #apache-flex #postgresql #flex4 #запылал

Вопрос:

Я сталкиваюсь с одной проблемой, когда пытаюсь вставить значения из flex (интерфейса) в базу данных (серверную часть).Нет проблем с подключением blazeds.Я думаю, проблема в Java-коде.В любом случае я вставляю как java, так и flex-код.Пожалуйста, дайте мне знать, как вставить значения в базу данных.Я не очень хорошо разбираюсь в Java.Итак, я много пытался решить эту проблему.

Мой гибкий код:

 <fx:Script>
    <![CDATA[
        import mx.controls.Alert;
        import mx.rpc.events.FaultEvent;
        import mx.rpc.events.ResultEvent;
        import mx.utils.ObjectUtil;
        private function processSendFeedback():void
        {
            ro.getHelloByName(name_txt.text,email_txt.text,number_txt.text,fb_txt.text);
        }
        private function result(event:ResultEvent):void
        {
            Alert.show(ObjectUtil.toString(event.result));
        }
        private function fault(event:FaultEvent):void
        {
            Alert.show(ObjectUtil.toString(event.fault));
        }
    ]]>
</fx:Script>

<fx:Declarations>
    <!-- Place non-visual elements (e.g., services, value objects) here -->
    <s:RemoteObject id="ro"
                    destination="helloworldname"
                    result="result(event)"
                    fault="fault(event)"/>
</fx:Declarations>

<s:Panel x="176"
         y="112"
         width="414"
         height="325"
         title="FeedBack"
         borderColor="#008040"
         fontWeight="bold"
         fontSize="13">


    <s:Button label="Submit"
              id="senfeddback"
              click="processSendFeedback()" 
              x="178" 
              y="246" 
              height="22" 
              width="86" 
              cornerRadius="12"/>

    <s:Label x="61" y="38" text="Name"/>
    <s:Label x="61" y="72" text="Email"/>
    <s:Label x="61" y="105" text="Number"/>
    <s:Label x="50" y="142" text="Feedback"/>

    <s:TextInput id="name_txt" x="119" y="30" width="260"/>
    <s:TextInput id="email_txt" x="119" y="65" width="260"/>
    <s:TextInput id="number_txt" x="119" y="100" width="260"/>
    <s:TextInput id="fb_txt" x="119" y="134" width="260" height="104"/>

</s:Panel>
  

Мой Java-код:

 public class HelloWorldName 
{ 

public static void main(String[] argv) 
{
    System.out.println("-------- PostgreSQL "  
            "JDBC Connection Testing ----------");
    getHelloByName(null, null, null, null);
}
public static String getHelloByName(String aName,String aMail,String aNumber,String aFeedback)
{
        String host = "localhost";
        String port = "1234";
        String dbName = "test";
        Connection connection = null;
    try 
    {
        connection = DriverManager.getConnection(
                "jdbc:postgresql://"   host   ":"   port   "/"   dbName,"postgres", "admin");

        System.out.println("Database is connected");    
     String strSQL = "insert into feedback(name,mobile_num,mail,feedback) values ('"   aName   "','"   aNumber  "','"   aMail  "','"   aFeedback  "')";
     Statement st = connection.createStatement();
     int a=st.executeUpdate(strSQL);
     System.out.println("hi,query executed");
    }
    catch(Exception e)
    {
        System.out.println();
    }
    return "Hello from Java, "   aName   ","   aMail  ","   aNumber  ","   aFeedback  "";
}
}
  

Я думаю, что я отправляю нулевые значения в Main в коде Java.Но если я попытаюсь добавить aName, aNumber, aMail, aFeedback вместо нулевых значений, отображается ошибка.Есть ли какой-либо способ решить эту проблему или есть какой-либо сайт, который поможет вставить значения в db с использованием java, blazeds.Пожалуйста, помогите мне.

Заранее спасибо.

Комментарии:

1. Вы определили пункт назначения в remoting-config.xml в WEB-INF? Есть ли какая-либо ошибка на консоли? пожалуйста, поделитесь

2. Да, Имран. Я определил пункт назначения, и он отображает те значения, которые я ввел в форме обратной связи, и он также отображает предупреждение. Проблема в том, что он не вставляется в базу данных.

Ответ №1:

Я думаю, что проблема заключается в статическом методе JAVA в соответствии с определением службы удаленного доступа

Служба удаленного взаимодействия позволяет клиентскому приложению получать доступ к методам серверных объектов Java

и в Java /oops статические методы не связаны с объектом / экземпляром, который зависит от него / связан с классом

ваш метод должен быть таким, чтобы принимать вызов из flex

 public String getHelloByName(String aName,String aMail,String aNumber,String aFeedback)
  

и для вызова этого в main (java main) используйте следующие строки

 HelloWorldName helloWorldName = new HelloWorldName();
helloWorldName.getHelloByName(null, null, null, null);
  

Вот пример Flash-Builder BlazeDS-Remoting

надеется, что это сработает

Комментарии:

1. Спасибо за ваш быстрый ответ, Имран. Я пытался следовать вашим инструкциям. Но теперь он также хранит нулевые значения в базе данных. Что бы вы ни отправили, пример blazeds-remoting не открывается. Я получаю ошибку 404. Пожалуйста, если у вас есть представление об этих концепциях, дайте мне знать шаги вкратце.

2. Ссылка работает для меня, попробуйте другой » sujitreddyg.wordpress.com/2009/06/01 / … «, Вы уверены, что BlazeDS обращается к Java методу, печатающему что-то после подписи функции, например общедоступную строку getHelloByName (String aName,String aMail,String aNumber,String aFeedback){ System.out.printline(«В getHelloByName»); //ваш код}, попробуйте это «В getHelloByName» должно быть напечатано на консоли сервера

3. также измените блок catch, чтобы печатать любое исключение на сервере catch (исключение e) { e.printStackTrace() }