Java在sql数据库中保存JavaObjects

Java在sql数据库中保存JavaObjects,java,sql,Java,Sql,我试图在我的SQL数据库中保存一个Java对象,但我遇到了一个无法解决的错误 stat.executeUpdate("CREATE Table users( id INT UNIQUE NOT NULL AUTO_INCREMENT,name char(50), pw char(50), messages LONGBLOB, profile LONGBLOB )"); 。 . 最后它说 SQL Exception : Unknown SQL Type for PreparedStatemen

我试图在我的SQL数据库中保存一个Java对象,但我遇到了一个无法解决的错误

stat.executeUpdate("CREATE Table users( id INT UNIQUE NOT NULL AUTO_INCREMENT,name char(50), pw char(50), messages LONGBLOB, profile LONGBLOB )");
。 .

最后它说

SQL Exception : Unknown SQL Type for PreparedStatement.setObject (SQL Type=1111
at sun.jdbc.odbc.JdbcOdbcPreparedStatement.setObject(Unknown Source)
希望任何人都能帮助我:D 提前Thx

ps配置文件类

public class Profile implements Serializable{
private String name;
private int idNumber;
private byte[] picture;
private String password;

public Profile(String n, int i, byte[] p, String pw) {
    this.name = n;
    this.idNumber = i;
    this.picture = p;
    this.password = pw;
}

public String getProfileName(){
    return this.name;
}
public int getIDNumber(){
    return this.idNumber;
}
public byte[] getProfilePicture(){
    return this.picture;
}
public String getPassword(){
    return this.password;
}

public void setIDNumber(int number){
    this.idNumber = number;
}
}


通过仅使用ps.setBytes(3,字节[])修复

使用
st.setBinaryStream(byte[])
而不是
st.setObject()
保存配置文件流。

签出并保存。别让它吓跑你。一旦你学会了,你就可以轻松地做所有这些事情

如果您仍然想使用jdbc,请使用以下命令。使用ArrayOutputStream创建新的ObjectOutputStream。现在,将可序列化对象直接写入ObjectOutputStream并关闭它。现在,使用底层ArrayOutputStream获取这些数据的byte[]数组表示形式,只需将这个byte数组作为bLOB的值提供给JDBC语句


这应该能解决你的问题。实际上,这可以被提取到实用程序类中,并在尝试存储序列化信息的任何地方使用。

您不能只存储随机Java对象。什么类型是
配置文件
?您可能需要将其序列化为其他格式。它只是一个实现Serializable的自制Java类在数据库中持久化序列化的Java对象通常是个坏主意。我建议您使用blob列来存储图片,而不要考虑序列化。另外,名为password的列听起来像是一个潜在的安全风险-使用hash insteadsorry只是给了我另一个错误…[MySQL][ODBC 5.2(a)Driver][mysqld-5.1.70-community]SQLBindParameter没有用于sun.jdbc.ODBC.JdbcOdbc.createSQLException(未知源)的所有参数。如果您需要进一步的指导,请给我一个注释,如果需要,我会更新答案。已经按照上面的答案尝试过了:D不幸的是,这个解决方案抛出[MySQL][ODBC 5.2(a)驱动程序][mysqld-5.1.70-community]SQLBindParameter没有用于sun.jdbc.ODBC.JdbcOdbc.createSQLException(未知源)的所有参数,原因是什么
public class Profile implements Serializable{
private String name;
private int idNumber;
private byte[] picture;
private String password;

public Profile(String n, int i, byte[] p, String pw) {
    this.name = n;
    this.idNumber = i;
    this.picture = p;
    this.password = pw;
}

public String getProfileName(){
    return this.name;
}
public int getIDNumber(){
    return this.idNumber;
}
public byte[] getProfilePicture(){
    return this.picture;
}
public String getPassword(){
    return this.password;
}

public void setIDNumber(int number){
    this.idNumber = number;
}