Java 使用新的加密值更新我的表
我的程序采用两个变量(密钥和文本),并使用一些算法对这两个变量进行加密。但我试图在这样的字段(作业表中的作业名称)上应用该程序来加密其值,我遇到了一个问题。 这是我的节目:Java 使用新的加密值更新我的表,java,Java,我的程序采用两个变量(密钥和文本),并使用一些算法对这两个变量进行加密。但我试图在这样的字段(作业表中的作业名称)上应用该程序来加密其值,我遇到了一个问题。 这是我的节目: public class dbconnection { java.sql.Connection con; java.sql.Statement st; ResultSet rs; public EncBean getConnection()throws SQLExce
public class dbconnection {
java.sql.Connection con;
java.sql.Statement st;
ResultSet rs;
public EncBean getConnection()throws SQLException{
EncBean encBean1 = new EncBean();
String v_url= "jdbc:oracle:thin:@192.168.2.172:1522:orcl2";
String v_username= "scott";
String v_password = "tiger";
try
{
DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
// Class.forName("oracle.jdbc.driver.OracleDriver");
con = DriverManager.getConnection(v_url,v_username,v_password);
System.out.println ("Connection to Oracle database was Established");
}
catch ( SQLException e)
{
e.printStackTrace();
}
return encBean1;
}
public EncBean selectRows()
{
EncBean encBean2 = new EncBean();
try
{
String SQLselect="select JOB_NAME from job";
st=con.createStatement();
rs=st.executeQuery(SQLselect);
while (rs.next()) {
encBean2.setName(rs.getString("JOB_NAME"));
}
}
catch ( Exception ex )
{
ex.printStackTrace();
}
return encBean2;}
public void updateRows(String updatedname){
try
{
String sql_statment = "UPDATE job SET job_name ='"+updatedname+"'";
System.out.println(sql_statment);
PreparedStatement updatequery = con.prepareStatement(sql_statment);
ResultSet rs = updatequery.executeQuery();
int records = rs.getInt(1);
for (int i=0; i<=records; i++) {
updatequery.setString(2,"job_name"+i);
}
updatequery.execute();
con.commit();
System.out.println("An existing user was updated successfully!");
}
catch(SQLException err){
System.out.println(err.getMessage());
} }}
输出为:
32313050“2#3&3'2”3&2&3$1'2$2&250//加密值
更新作业集job_name='32313050“2#3&3'2”3&2&3$1'2$2&250'
ORA-00933:SQL命令未正确结束
你好,世界!
进程已完成。我不清楚
dbconnection
类中的updateRows
方法。我认为您对execute()
和executeQuery()
方法没有正确的认识
- 布尔执行(字符串SQL):-如果 可以检索ResultSet对象;否则,它将返回false。我们 可以使用此方法执行SQL DDL语句
- ResultSet executeQuery(字符串SQL):-它返回一个ResultSet对象。 当我们想在数据库中执行SELECT查询时,可以使用这种方法
updateRows
方法中执行更新。因此,使用ResultSet rs=updatequery.executeQuery()是没有用的代码>一旦您要执行更新。它还提供了一个错误。(java.sql.SQLException:无法使用executeQuery()发出数据操作语句)
。您可以使用ps.execute()编码>以使其成功。
执行如下更新是一种良好的做法:
PreparedStatement ps =con.prepareStatement("UPDATE job SET job_name =? WHERE job_id=?");
ps.setString(1, "Sam");
ps.setInt(2, 2);
ps.execute();
创建查询的字符串连接可能会出现性能和安全问题。非常感谢您Madushan Perera的回复,我想告诉您密钥不在数据库中,但我在运行时输入它,其中密钥与字段名(作业名称)关联它们被一些相关函数加密。我想通过字段中的这些加密值更新我的表。我该怎么做?给我提个建议。
PreparedStatement ps =con.prepareStatement("UPDATE job SET job_name =? WHERE job_id=?");
ps.setString(1, "Sam");
ps.setInt(2, 2);
ps.execute();