如何使用 java 添加自动增量值?
How do I add the auto increment values with java?
我使用
在 Mysql 中创建了一个 table
Create table
(
id int auto_increment,
us varchar(100),
ps varchar(1000)
);
并使用 java 通过我的 GUI 应用程序添加值:
我使用以下方法将值添加到我的数据库中:
public static void Mysql(String u, String p) throws NoSuchAlgorithmException, InvalidKeySpecException
{
String hashpass=passhash(p);//throws declaration for this statement
try{
Class.forName("com.mysql.cj.jdbc.Driver");
Connection con=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/bs","root","root");
String query = " insert into login (id,us,ps)"
+ " values (?,?, ?)";
Statement stmt=con.createStatement();
ResultSet rs=stmt.executeQuery("select * from login");
int id=0;
while(rs.next())
{
id= rs.getInt(1);
}
PreparedStatement preparedStmt = con.prepareStatement(query);
preparedStmt.setInt(1, id++); //I don't want this method because id is auto increment
preparedStmt.setString(2,u);
preparedStmt.setString(3,hashpass);
preparedStmt.execute();
con.close();
}catch(Exception e){ System.out.println(e);}
}
Everything works fine
但 id 是 auto_increment,我不需要在添加其他列值时向 id 添加值。
在通过 java 添加时我不能那样添加,就像只添加我们一样,ps 列和 ID 将自动递增。
Are there any methods to add data without passing the parameters?
从 sql 语句中删除列 id
:
String query = "insert into login (us, ps) values (?, ?)";
并且不要在准备好的语句中为它设置任何值,所以删除这一行:
preparedStmt.setInt(1, id++);
列 id
是 auto_inrement
因此它的值将由 MySql 设置。
当然将其他行的索引更改为 1 和 2:
preparedStmt.setString(1,u);
preparedStmt.setString(2,hashpass);
您可能会插入没有 ID 的数据,因为它将 auto-generated 来自 SQL
public static void Mysql(String u,String p) throws NoSuchAlgorithmException, InvalidKeySpecException {
String hashpass=passhash(p);
try{
Class.forName("com.mysql.cj.jdbc.Driver");
Connection con=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/bs","root","root");
String query = " insert into login (us,ps) values (?, ?)"; // CHECK HERE
Statement stmt=con.createStatement();
ResultSet rs=stmt.executeQuery("select * from login");
PreparedStatement preparedStmt = con.prepareStatement(query);
preparedStmt.setString(1,u);
preparedStmt.setString(2,hashpass);
preparedStmt.execute();
con.close();
}catch(Exception e){
System.out.println(e);}
}
}
我使用
在 Mysql 中创建了一个 tableCreate table
(
id int auto_increment,
us varchar(100),
ps varchar(1000)
);
并使用 java 通过我的 GUI 应用程序添加值:
我使用以下方法将值添加到我的数据库中:
public static void Mysql(String u, String p) throws NoSuchAlgorithmException, InvalidKeySpecException
{
String hashpass=passhash(p);//throws declaration for this statement
try{
Class.forName("com.mysql.cj.jdbc.Driver");
Connection con=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/bs","root","root");
String query = " insert into login (id,us,ps)"
+ " values (?,?, ?)";
Statement stmt=con.createStatement();
ResultSet rs=stmt.executeQuery("select * from login");
int id=0;
while(rs.next())
{
id= rs.getInt(1);
}
PreparedStatement preparedStmt = con.prepareStatement(query);
preparedStmt.setInt(1, id++); //I don't want this method because id is auto increment
preparedStmt.setString(2,u);
preparedStmt.setString(3,hashpass);
preparedStmt.execute();
con.close();
}catch(Exception e){ System.out.println(e);}
}
Everything works fine
但 id 是 auto_increment,我不需要在添加其他列值时向 id 添加值。
在通过 java 添加时我不能那样添加,就像只添加我们一样,ps 列和 ID 将自动递增。
Are there any methods to add data without passing the parameters?
从 sql 语句中删除列 id
:
String query = "insert into login (us, ps) values (?, ?)";
并且不要在准备好的语句中为它设置任何值,所以删除这一行:
preparedStmt.setInt(1, id++);
列 id
是 auto_inrement
因此它的值将由 MySql 设置。
当然将其他行的索引更改为 1 和 2:
preparedStmt.setString(1,u);
preparedStmt.setString(2,hashpass);
您可能会插入没有 ID 的数据,因为它将 auto-generated 来自 SQL
public static void Mysql(String u,String p) throws NoSuchAlgorithmException, InvalidKeySpecException {
String hashpass=passhash(p);
try{
Class.forName("com.mysql.cj.jdbc.Driver");
Connection con=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/bs","root","root");
String query = " insert into login (us,ps) values (?, ?)"; // CHECK HERE
Statement stmt=con.createStatement();
ResultSet rs=stmt.executeQuery("select * from login");
PreparedStatement preparedStmt = con.prepareStatement(query);
preparedStmt.setString(1,u);
preparedStmt.setString(2,hashpass);
preparedStmt.execute();
con.close();
}catch(Exception e){
System.out.println(e);}
}
}