#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() }