到目前为止,只有当我在executionUpdate语句中声明值时,我才能将数据插入到我的SQL表中.我想知道是否有一种方法可以将这些值作为变量传递给我将在执行方法中声明为参数,如下所示:
public void updateSQL(String name, String dnsName, String ipV4, String ipV6, int statusCode)
{
try
{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection connection = DriverManager.getConnection("jdbc:sqlserver://servername;database=databasename;integratedSecurity=true");
System.out.println("Database Name: " + connection.getMetaData().getDatabaseProductName());
Statement statement = connection.createStatement();
statement.executeUpdate("INSERT INTO ComputerStatus(Name, DNSName, IPAddressV4, IPAddressV6, StatusCodeID)" + "VALUES(@Name, @DNSName, @IPAddressV4, @IPAddressV6, @StatusCodeID)");
System.out.println("Data Inserted");
ResultSet resultSet = statement.executeQuery("SELECT Name FROM ComputerStatus");
while(resultSet.next())
{
System.out.println("Computer Name: " + resultSet.getString("Name"));
}
connection.close();
}
catch (Exception e)
{
e.printStackTrace();
System.err.println("Problem Connecting!");
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试过几种不同的东西,但到目前为止还没有运气.任何人都知道这是否可以做到?
fon*_*ini 12
您可以使用PreparedStatement而不是Statement.
PreparedStatement stmt = connection.prepareStatement("insert into test (firstname, lastname) values (?, ?");
stmt.setString(1, name);
stmt.setString(2, lname);
stmt.executeUpdate();
Run Code Online (Sandbox Code Playgroud)
使用这种方式,可以防止SQL注入.
| 归档时间: |
|
| 查看次数: |
25280 次 |
| 最近记录: |