当我尝试将加密的“密码文本”保存到 SQL Server 2008r2 数据库时遇到问题。当我从 java-Netbeans 保存时,sql 收到“?????” 在文本字段上,我发现这是因为或 unicode ...我正在使用 BLOWFISH 加密(该类工作完美)但我无法解密它,因为我从 DB “????” 文本而不是原始文本(密码)
你知道我该如何解决这个问题吗?,一位朋友告诉在 DB 上使用“varbinary”而不是“varchar”,但不知道该怎么做:S
谢谢
public boolean SavetoDB() {
DATABASE_CONNECTION con = new DATABASE_CONNECTION();
cn = con.conectar();
boolean resp = false;
try {
String sql = "INSERT INTO cliente(usuario, pass, Nombre, Apellido, Edad,"
+ "genero, Direccion, Telefono, Celular, img_name,tipo_cuenta, ipaddress, puerto,segundos,minutos,horas)"
+ " VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?,?,?,?,?)";
PreparedStatement cmd = cn.prepareStatement(sql);
cmd.setString(1, usuario);
cmd.setString(2, pass);
cmd.setString(3, Nombre);
cmd.setString(4, Apellido);
cmd.setInt(5, Edad);
cmd.setString(6, genero);
cmd.setString(7, Direccion);
cmd.setInt(8, Telefono);
cmd.setInt(9, Celular);
cmd.setString(10, nombrearch);
cmd.setString(11, tipo_cuenta);
cmd.setString(12, ip);
cmd.setString(13, puerto);
cmd.setInt(14, 1);
cmd.setInt(15, 0);
cmd.setInt(16, 0);
////////////////////////////////////////////////////////
///////////////////////////////////////////////////////
if (!cmd.execute()) {
resp = true;
}
cmd.close();
cn.close();
} catch (Exception ex) {
System.out.println("Error: " + ex.getMessage());
}
return resp;
}
SQL 表:
创建表客户端(
usuario varchar(15) 不是空主键,
传递 varchar(90) 不为空,
Nombre varchar(32) 不为空,
Apellido varchar(32) 不为空,
Edad int 不为空,
Genero varchar(15) 不为空,
方向 varchar(32),
电话 int,
蜂窝整数,
img_name varchar(32) 不为空,
tipo_cuenta varchar(15) 不为空,
fecha_creacion 日期,
ipaddress varchar(20) 不为空,
puerto varchar (30) 不为空,
segundos int 不为空,
minutos int 不为空,
horas int 不为空,
)