java - 如何在我的 SQL 语句中使用 Java 变量?
问题描述
我正在尝试使用局部变量用户名和密码添加到我的表中。我只尝试了变量,该条目被计算在内,但它显示为空白。
public class FullDB
{
public static void main(String args)
{
FullDB connection = new FullDB();
}
public FullDB()
{
createConnection("usman","hello",true);
}
public void createConnection(String userName, String password, boolean select) {
try {
//Connect to database
Class.forName("com.mysql.cj.jdbc.Driver");
Connection connect = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/?", "root", "");
System.out.println("Connected to Database");
//SQL Statement
Statement query = connect.createStatement();
//Insert Statement
if (userName != null)
{
//query.executeUpdate("INSERT INTO users" + "(UserName,Password)" + "VALUES (userName,password)");
query.execute("DELETE FROM users");
}
if (select == true)
{
ResultSet rs = query.executeQuery("SELECT * FROM users");
System.out.println("User Data:");
while(rs.next())
{
String table = rs.getString("UserName");
System.out.println(table);
}
}
}
catch (ClassNotFoundException ex)
{
Logger.getLogger(FullDB.class.getName()).log(Level.SEVERE, null, ex);
}
catch (SQLException ex)
{
Logger.getLogger(FullDB.class.getName()).log(Level.SEVERE, null, ex);
ex.printStackTrace();
}
}
}
解决方案
尝试这个...
query.executeUpdate("INSERT INTO users (UserName,Password) VALUES ('" + userName + "','" + password + "');");
也许双引号在错误的位置。尝试直接在数据库命令行中使用相同的查询,不使用引号和一些虚拟数据,如果它在那里工作,请进行必要的修改以适合您的代码。
(编辑)
正如saarp在下面的评论中提到的,在 SQL 字符串中使用值存在一些安全问题,这样做很简单但不是最安全的方法。
而且,这些值必须用单引号 ( ' ) 转义,我总是忘记它们。问题已在上面的代码中修复。
推荐阅读
- ios - SwiftUI 在按钮单击时打开另一个视图
- python - 如何将一个列表中的值随机替换为另一个列表中的值?
- android - 如何每秒观察一个方法String的返回值?
- apache - 强制从 https://example.com 重定向到 https://www.example.com
- reactjs - React Native App 不会显示 Api 结果
- java - 如何复制具有重复值的 HashMap
- python - 使用 Python 从 .txt 文件中随机生成加权词列表
- ios - 带有 MVVMCross 的 Xamarin.iOS 仅在 ViewControllers 处调用构造函数
- django - 创建混合大小写或大写的列名时,Django 列不存在错误
- javascript - 输入字段在清除后失效