如果是这样,如果你能够保证id字段一定会是15个字节的话,即为REG+12位数字,那么可以通过先选择已存在数据中12个数字最大的那条记录,sql语句为: select top 1 ID from TableName order by ID desc;//已经测试过 然后取得ID对应的字符串,不妨为String str = "REG000000000011"; 进行如下例处理 public class Test { public static void main(String[] args) { String str = "REG100000000011"; str = str.substring(3); Test st = new Test(); str = st.backString(str); System.out.println(str);//递增1后写入数据库的数据字段 } public String backString(String str) { String num = str; long i = Long.parseLong(num); i = i+1;//递增 num = ""; num = Long.toString(i); num = "000000000000" + num.trim(); num = num.substring(num.length()-12); num = "REG" + num; return num; } }
String ID=result.getString('ID'); String TempID= String.valueOf(Integer.parseInt(ID.substring(4),10)+1) int len=TempID.length(); String NextID="REG000000000000000".substring(0,len)+TempID;
我试用jdbc连接本地数据库名Test,用户sa,密码空,数据表名TestT,表中两个字段:ID VARCHAR(15),Memo VARCHAR(10);已存数据最大为REG000000000206 测试成功,程序如下:import java.sql.*; public class DbTest { public static void main(String[] args) { try { String address = "jdbc:microsoft:sqlserver://192.168.0.24:1433"; String user="sa"; String passwd=""; String database = "TEST"; Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); Connection con = DriverManager.getConnection(address,user,passwd); con.setCatalog(database); Statement smt = con.createStatement(); String sqlCode = "select top 1 ID from TestT order by ID desc"; ResultSet r = smt.executeQuery(sqlCode); String num = ""; while(r.next()) { num = r.getString("ID"); } r.close(); //递增处理 num = num.substring(3); long i = Long.parseLong(num); i = i+1;//递增 num = ""; num = Long.toString(i); num = "000000000000" + num.trim(); num = num.substring(num.length()-12); num = "REG" + num; sqlCode = "insert into TestT values ('"+num+"','test');"; smt.executeUpdate(sqlCode); smt.close(); con.close(); System.out.println("success insert id is " + num); } catch(Exception e) { System.out.println(e); } } } //
insert into tablename(id) select 'REG'+replace(str(max(substring(id,4,12))+1,12),' ','0') from tablename这种方法很好!
我试用jdbc连接本地数据库名Test,用户sa,密码空,数据表名TestT,表中两个字段:ID VARCHAR(15),Memo VARCHAR(10);已存数据最大为REG000000000206 测试成功,程序如下:import java.sql.*; public class DbTest { public static void main(String[] args) { try { String address = "jdbc:microsoft:sqlserver://192.168.0.24:1433"; String user="sa"; String passwd=""; String database = "TEST"; Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); Connection con = DriverManager.getConnection(address,user,passwd); con.setCatalog(database); Statement smt = con.createStatement(); String sqlCode = "select top 1 ID from TestT order by ID desc"; ResultSet r = smt.executeQuery(sqlCode); String num = ""; while(r.next()) { num = r.getString("ID"); } r.close(); //递增处理 num = num.substring(3); long i = Long.parseLong(num); i = i+1;//递增 num = ""; num = Long.toString(i); num = "000000000000" + num.trim(); num = num.substring(num.length()-12); num = "REG" + num; sqlCode = "insert into TestT values ('"+num+"','test');"; smt.executeUpdate(sqlCode); smt.close(); con.close(); System.out.println("success insert id is " + num); } catch(Exception e) { System.out.println(e); } } } //
yourtable
select top 1 ID from TableName order by ID desc;//已经测试过
然后取得ID对应的字符串,不妨为String str = "REG000000000011";
进行如下例处理
public class Test {
public static void main(String[] args) {
String str = "REG100000000011";
str = str.substring(3);
Test st = new Test();
str = st.backString(str);
System.out.println(str);//递增1后写入数据库的数据字段
}
public String backString(String str) {
String num = str;
long i = Long.parseLong(num);
i = i+1;//递增
num = "";
num = Long.toString(i);
num = "000000000000" + num.trim();
num = num.substring(num.length()-12);
num = "REG" + num;
return num;
}
}
String TempID=
String.valueOf(Integer.parseInt(ID.substring(4),10)+1)
int len=TempID.length();
String NextID="REG000000000000000".substring(0,len)+TempID;
测试成功,程序如下:import java.sql.*;
public class DbTest {
public static void main(String[] args) {
try {
String address = "jdbc:microsoft:sqlserver://192.168.0.24:1433";
String user="sa";
String passwd="";
String database = "TEST";
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
Connection con = DriverManager.getConnection(address,user,passwd);
con.setCatalog(database);
Statement smt = con.createStatement();
String sqlCode = "select top 1 ID from TestT order by ID desc";
ResultSet r = smt.executeQuery(sqlCode);
String num = "";
while(r.next()) {
num = r.getString("ID");
}
r.close();
//递增处理
num = num.substring(3);
long i = Long.parseLong(num);
i = i+1;//递增
num = "";
num = Long.toString(i);
num = "000000000000" + num.trim();
num = num.substring(num.length()-12);
num = "REG" + num;
sqlCode = "insert into TestT values ('"+num+"','test');";
smt.executeUpdate(sqlCode);
smt.close();
con.close();
System.out.println("success insert id is " + num);
}
catch(Exception e) {
System.out.println(e);
}
}
} //
select 'REG'+replace(str(max(substring(id,4,12))+1,12),' ','0')
from tablename这种方法很好!
测试成功,程序如下:import java.sql.*;
public class DbTest {
public static void main(String[] args) {
try {
String address = "jdbc:microsoft:sqlserver://192.168.0.24:1433";
String user="sa";
String passwd="";
String database = "TEST";
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
Connection con = DriverManager.getConnection(address,user,passwd);
con.setCatalog(database);
Statement smt = con.createStatement();
String sqlCode = "select top 1 ID from TestT order by ID desc";
ResultSet r = smt.executeQuery(sqlCode);
String num = "";
while(r.next()) {
num = r.getString("ID");
}
r.close();
//递增处理
num = num.substring(3);
long i = Long.parseLong(num);
i = i+1;//递增
num = "";
num = Long.toString(i);
num = "000000000000" + num.trim();
num = num.substring(num.length()-12);
num = "REG" + num;
sqlCode = "insert into TestT values ('"+num+"','test');";
smt.executeUpdate(sqlCode);
smt.close();
con.close();
System.out.println("success insert id is " + num);
}
catch(Exception e) {
System.out.println(e);
}
}
} //