0

こんにちは、特定の製品に関する情報を追加する Web ページを作成しています。ID、名前、説明、および画像を情報として入力する必要があります。ID を自動生成する必要があります。JSP とデータベースをアクセスとして使用しています。フェッチしています。データベースから count(*)+1 の値を取得し、HTML テキスト ボックスに割り当てていますが、null として表示されています。

コード:

<body>
<%@page import="java.sql.*"%>
<%! String no; %>
<%
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con = DriverManager.getConnection("jdbc:odbc:pd");
ResultSet rs = null;
Statement st = con.createStatement();
String sql = ("select count(*)+1 from products");
st.executeUpdate(sql);
while (rs.next()) { 
no=rs.getString("count(*)+1");
}
rs.close();
st.close();
con.close();
}
catch(Exception e){}
%> 
<Form name='Form1' action="productcode.jsp" method="post">
<table width="1024" border="0">
  <tr>
    <td width="10">&nbsp;</td>
    <td width="126">Add Product: </td>
    <td width="277">&nbsp;</td>
    <td width="583">&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>Product Id:</td>
    <td><label>
      <input type="text" name="id" value="<%= no%>"/>
    </label></td>
    <td>&nbsp;</td> 
.... and so on
4

2 に答える 2

2
  {..}.executeQuery("Select max(id) from tablename");

IDこれにより、最大数のが返されます。よりも効率的ですselect * from tablename order by id desc limit 1

IDただし、データベースにまだ存在しないオブジェクトを推測/生成しようとしているようです。これは最善の方法ではなく、IDDB によって生成されたものとは異なる場合があります。また、2 人のユーザーが同時に 2 つの新しいオブジェクトを作成しようとすると、重複エラーが発生する可能性があります。

「製品の作成」ボタンが押されるまで、製品 ID を提供しないことをお勧めします。@@IDENTITY;SQL コマンドで使用して、 newIDを製品に安全に設定します。

于 2012-09-15T09:36:09.313 に答える
1

このようなデータを取得するクエリを作成しました

          String sql = ("select count(*)+1 from products");
          st.executeUpdate(sql);

ステートメント

            executeUpdate()

INSERT、UPDATEなどの操作を行うためにのみ使用されます

試す

             rs=st.executeQuery(sql); 

executeUpdate() の代わりに

于 2012-09-15T09:22:03.920 に答える