Image uploaded while name and city return null

Good day Programmers. this code uploads image to database while other forms input like name and city returns null. what do i do

here is the code

<%@ page import="java.sql.*" %> 
<%@ page import="org.apache.commons.fileupload.*"%> 
<%@ page import="org.apache.commons.io.output.*"%> 
<%@ page import="org.apache.commons.fileupload.servlet.*"%> 
<%@ page import="org.apache.commons.fileupload.disk.*"%> 
<%@ page import="java.io.*"%> 
<%@ page import="java.util.*"%> 
<% 
Connection connection; 
response.setContentType("text/html"); 
PrintWriter pw = response.getWriter(); 
Class.forName("com.mysql.jdbc.Driver").newInstance(); 
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/goodness","mutago", "mutago56"); 

byte[] b=null; 
try{ 
String name = request.getParameter("name"); 
String city = request.getParameter("city"); 
PreparedStatement psImageInsertDatabase= connection.prepareStatement("insert into pict1 (image,name,city)values(?,?,?)"); 
DiskFileItemFactory factory = new DiskFileItemFactory(); 

ServletFileUpload sfu = new ServletFileUpload(factory); 
List items = sfu.parseRequest(request); 

Iterator iter = items.iterator(); 

while (iter.hasNext()) { 
FileItem item = (FileItem) iter.next(); 
if (!item.isFormField()) 
	{
	
	String fname = item.getFieldName();
	String fvalue = item.getString();

	if (fname.equals("name"))
			name = fvalue.toString();
	if (fname.equals("city"))
			city = fvalue.toString();
	
	b = item.get(); 
	

	} 
} 



psImageInsertDatabase.setBytes(1,b); 
psImageInsertDatabase.setString(2,name); 
psImageInsertDatabase.setString(3,city); 
int i = psImageInsertDatabase.executeUpdate(); 
if(i!=0){ 
pw.println("<br>Record has been inserted successfully"); 
} 
else{ 
pw.println("failed to insert the data"); 
} 
} 
catch(Exception e) 
{ 
pw.println(e); 
e.printStackTrace(); 
response.sendRedirect("cat.jsp"); 
} 

%>

Thanks