Ошибка вставки данных сервера SQL - PullRequest
0 голосов
/ 09 ноября 2009

Я пытаюсь этот код, это проблема для передачи значения в mssqlserver. Я передаю значение одной страницы на другую страницу, слышу, что nrno это значение, приходящее на другую страницу, но слышу, что ошибка - java.sql.SQLException: Неверное имя столбца 'nrno'.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled</title>
</head>
<body>
<%@ page import="java.sql.*" %>
<%@ page import="java.io.*" %>

<%
String AppURL = request.getContextPath() ;
String thisFile = AppURL+request.getServletPath() ;
int nrno = 0;
try
{
 nrno = Integer.parseInt(request.getParameter("rno"));
}
catch(NumberFormatException ex)
{ 
    nrno = 0;
}
%>
<td>this is in roolno :- <%=nrno%> </td><br>
<%
Class.forName("net.sourceforge.jtds.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:jtds:sqlserver://localhost:1433/sample", "sa", "sa1234");
java.sql.Statement stmt = conn.createStatement();
            try
            {
        int val = stmt.executeUpdate("INSERT student (name,rno) VALUES('nikki',+ nrno)");
            out.println("1 row affected");
      }
      catch (SQLException s)
            {
        System.out.println("SQL statement is not executed!");
      }
stmt.close();
conn.close();
%>
</body>
</html>

Ответы [ 2 ]

1 голос
/ 09 ноября 2009

Вам не нужно следующее?

   int val = stmt.executeUpdate("INSERT student (name,rno) VALUES('nikki'," + nrno + ")");

В приведенном выше примере кода вы не вставляете значение из nrno, а скорее саму строку nrno (поскольку она находится в двойных кавычках).

В дальнейшем я бы исследовал PreparedStatements , чтобы вы могли сделать следующее:

   PreparedStatement pstmt = con.prepareStatement("INSERT student (name,rno) VALUES(?,?)");
   pstmt.setString(1, 'nikki');
   pstmt.setInt(2, nrno);

и избегайте неприятных кавычек, таких как приведенные выше, плюс возможные проблемы с инъекцией SQL (я понимаю, что вышеупомянутое может быть упражнением или подобным, но это полезно знать).

0 голосов
/ 09 ноября 2009

Изменить,

int val = stmt.executeUpdate("INSERT student (name,rno) VALUES('nikki'," + nrno 
+ ")");  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...