2014-04-30 8 views
0

Я разрабатываю приложение Android, и я использую RestFul Webservices. Я использовал multiPartEntity для отправки данных с клиентской стороны на сервер. У меня нет ошибок на стороне клиента. Но у меня есть ошибка в коде на стороне сервера. Помоги мне?Как исправить эту ошибку?

Мой стороне клиента код:

    multipart.addPart("hotelName",new StringBody(hotelName)); 
        multipart.addPart("userName",new StringBody(userName)); 
        multipart.addPart("password",new StringBody(password)); 
        multipart.addPart("tinNumber",new StringBody(tinNumber)); 
        multipart.addPart("Address",new StringBody(Address)); 
        multipart.addPart("mobile_No",new StringBody(mobile_No)); 
        multipart.addPart("email_Id",new StringBody(email_Id)); 
        multipart.addPart("star_Rate",new StringBody(star_Rate));      
        multipart.addPart("imagePath",new InputStreamBody(getContentResolver().openInputStream(Uri.parse("file://"+imagePath)),imageName+".jpg")); 

        httppost.setEntity(multipart); 
        response = httpclient.execute(httppost); 

Мой код на стороне сервера является

@POST 
@Consumes(MediaType.MULTIPART_FORM_DATA) 
@Produces(MediaType.APPLICATION_JSON) 
public void postHotel(MultiPart hotelParams) 
     throws SQLException, FileNotFoundException, IOException { 

      stmt.executeUpdate("insert into hotel (name,user_name,password,tin_number,address,mobile_no,email,rating,hotel_logo) values('" 
      +hotelParams.getBodyParts().get(0) 
      + "','" 
      + hotelParams.getBodyParts().get(1) 
      + "','" 
      + hotelParams.getBodyParts().get(2) 
      + "'," 
      + hotelParams.getBodyParts().get(3) 
      + ",'" 
      + hotelParams.getBodyParts().get(4) 
      + "'," 
      + hotelParams.getBodyParts().get(5) 
      + ",'" 
      + hotelParams.getBodyParts().get(6) 
      + "','" 
      + hotelParams.getBodyParts().get(7) + "','" + hotelParams.getBodyParts().get(8) + "');"); 

Моя ошибка как:

SERVE: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 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 '.multipart.F[email protected],'[email protected]' at line 1 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) 
    at java.lang.reflect.Constructor.newInstance(Unknown Source) 
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:409) 
    at com.mysql.jdbc.Util.getInstance(Util.java:384) 
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1054) 
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3566) 
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3498) 
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1959) 
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2113) 
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2562) 
    at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1664) 
    at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1583) 
    at com.orderfree.Resource.HotelRegsiter.postHotel(HotelRegsiter.java:98) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 

Пожалуйста, помогите мне друзья

+0

Put пространство между 'hotel' и ...:' отелем (user_name, пароль) значением (' – AliBZ

ответ

0

Это ошибка синтаксиса SQL попытаться вывести значения из hotelParams.getBodyParts().get(0)

и hotelParams.getBodyParts().get(1)

1.Try проверить, является ли вы получаете строки или нет.

2.Try проверить пробельные между SQL запроса

3.Try редактировать ур код, поставив что-то вроде этого

@POST 
@Consumes(MediaType.MULTIPART_FORM_DATA) 
@Produces(MediaType.APPLICATION_JSON) 
public void postHotel(@FormDataParam("user_name") String userName 
        @FormDataParam("password") String password) 
     throws SQLException, FileNotFoundException, IOException { 

      stmt.executeUpdate("insert into hotel(user_name,password)values('" 
      +userName 
      + "','" 
      +password 
      + "'); 
+0

я не получил строку value.i получил результат как BodyPart из multiPartEntity – user3590242

+0

не использовать multipart попытаться получить имя пользователя и пароль как часть post request.And извлечь значения на стороне сервера, используя @RequestParam – Naveen

+0

Я прошел изображение с клиента на сервер через MultiPartEntity, но я didn 't надеть этот код.so только я использую MultiPartEntity, можете ли вы исправить это? – user3590242

0

Почему вы используете многоголосных для этой цели? Используйте только два аргумента, пользователя и пароль. Я рекомендую вам начать с этого простым решением:

@Path("/user/{username}/{password}") 
    public void postHotel(@PathParam("username") String username, @PathParam("password") String password) { 
     stmt.executeUpdate("insert into hotel(username,password)values('" 
     +hotelParams.getBodyParts().get(0) 
     + "','" 
     + hotelParams.getBodyParts().get(1) 
     + "'); 
+0

Я прошел изображение с клиента на сервер через MultiPartEntity. но я не надел этот код.so только я использую MultiPartEntity, можете ли вы исправить это? – user3590242

0
@POST 
@Consumes(MediaType.MULTIPART_FORM_DATA) 
@Produces(MediaType.APPLICATION_JSON) 
public void postHotel(MultiPart hotelParams) 
     throws SQLException, FileNotFoundException, IOException { 

      stmt.executeUpdate("insert into hotel(user_name,password)values('" 
      +hotelParams.getBodyParts().get(0) 
      + "','" 
      + hotelParams.getBodyParts().get(1) 
      + "'"); 
Смежные вопросы