【发布时间】:2011-04-23 16:49:14
【问题描述】:
(1)
import java.sql.*;
public class jdbcDemo
{static Connection con=null;
public static void main(String args[])
{ int id = 0;
try
{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection("jdbc:odbc:login");
Statement stat = con.createStatement();
System.out.println("got connection");
ResultSet rs = stat.executeQuery("Select max(UID) from mytable");
while(rs.next())
{ id=rs.getInt(1);
}
id++;
System.out.println(id);
PreparedStatement ps = con.prepareStatement("INSERT into mytable(UID,Username,Password) values(?,?,?)");
ps.setInt(1,id);
ps.setString(2,"abhi");
ps.setString(3,"bindra");
ps.executeUpdate();
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
(2)
import java.sql.*;
public class jdbcDemo
{static Connection con=null;
public static void main(String args[])
{ int id = 0;
try
{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection("jdbc:odbc:login");
Statement stat = con.createStatement();
System.out.println("got connection");
ResultSet rs = stat.executeQuery("Select max(UID) from mytable");
while(rs.next())
{ id=rs.getInt(1);
}
id++;
System.out.println(id);
PreparedStatement ps = con.prepareStatement("INSERT into mytable(UID,Username,Password) values(?,?,?)");
ps.setInt(1,id);
ps.setString(2,"abhi");
ps.setString(3,"bindra");
ps.executeUpdate();
String s1,s2;
ResultSet rs1 = stat.executeQuery("Select * from mytable where UID="+id+"");
while(rs1.next())
{
s1=rs1.getString(2);
s2=rs1.getString(3);
System.out.print(s1+s2);
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
部分
ResultSet rs1 = stat.executeQuery("Select * from mytable where UID="+id+"");
while(rs1.next())
{
s1=rs1.getString(2);
s2=rs1.getString(3);
System.out.print(s1+s2);
}
为什么这个部分如此重要?为什么 ps.executeUpdate() 不将行插入表中?没有插入(1)中的部分,记录不会出现在表中。
【问题讨论】:
-
如果您使用 IDE,请弄清楚它如何重新格式化您的源代码。
-
我看不出你在第 1 部分和第 2 部分之间插入的方式有什么区别。执行后的选择查询应该没有任何区别。默认情况下,Jdbc 连接将 autoCommit 设置为 true。因此,如果您没有遇到任何异常,executeUpdate() 应该提交数据。
-
@Thorbjorn:我没有使用任何 IDE ..只是文本板。
-
@CoolBeans :确切地说,我完全认为它不应该有任何区别,但我已经完全空白了。我在准备好的语句中尝试了一个 UPDATE 查询并没有部分地执行它,直到我执行它才执行在其中插入“部分”。说真的,出了点问题
-
代码有很多错误,我不知道从哪里开始回答。这里至少有一个链接可以让你走上正轨:balusc.blogspot.com/2008/07/dao-tutorial-data-layer.html
标签: java jdbc prepared-statement