java - 在 Java 中使用变量将值插入到 SQL 数据库表中

标签 java sql tsql

我正在研究 Gaddis Java 教科书中的一个实验室,我正在尝试使用一个变量来表示球队名称,将一个条目插入到运动队的 T-SQL 数据库表中。

代码

do
{
    // ADD LINES FOR TASK #3 HERE
    // Prompt the user for a new team name
    System.out.println("Enter new team name: ");
    teamName = keyboard.nextLine();

    // Update the Teams table
    String sqlStatement = "INSERT INTO Teams" +
                          "VALUES " + teamName + ", 0, 0, 0";
    int rows = stmt.executeUpdate(sqlStatement);

    System.out.print("Do you want to enter " +
                             "another team: ");
    ans = keyboard.nextLine().charAt(0);

} while(ans == 'Y'|| ans == 'y');

当输入值 Braves 时,出现错误 Incorrect syntax near 'Braves'。

在此先感谢您提供的所有帮助!

更新 01

感谢反馈,我更新了我的 SQL 语句,并指定了列名以确保顺序正确。

// Update the Teams table
String sqlStatement = "INSERT INTO Teams" +
                      "(TeamName, Wins, Losses, Ties)" +
                      "VALUES (" + teamName + " , 0, 0, 0)";       
int rows = stmt.executeUpdate(sqlStatement);

但是,现在出现错误 ERROR: Invalid column name 'Braves'. 当出现提示时输入 Braves。我不明白为什么要将变量 teamName 指定为值。

已解决

感谢@MrLY,我已经解决了这个问题!感谢其他所有提供帮助的人!

最佳答案

问题出在你的查询上

String sqlStatement = "INSERT INTO Teams" +"VALUES " + teamName + ", 0, 0, 0";
int rows = stmt.executeUpdate(sqlStatement);

你的插入查询应该是这样的:

INSERT INTO Teams VALUES(att1, att2, att3, ...);

所以把你的查询改成这样:

 String sqlStatement = "INSERT INTO Teams " +"VALUES( " + teamName + ", 0, 0, 0)";

如果你想插入一个特定的属性,那么你应该像这样创建你的查询:

String sqlStatement = "INSERT INTO Teams(att1, att2, att2, att2) " +"VALUES( " + teamName + ", 0, 0, 0)";

编辑

你的字符串应该在两个'my string'之间,所以你的查询现在应该是这样的:

String sqlStatement = "INSERT INTO Teams" +
                      "(TeamName, Wins, Losses, Ties)" +
                      "VALUES ('" + teamName + "' , 0, 0, 0)";

注意

我建议使用prepared statement,它比这种方式更有用也更安全

您可以了解更多关于 PreparedStatement 的信息

关于java - 在 Java 中使用变量将值插入到 SQL 数据库表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41088221/

相关文章:

java - 如何插入定时器来处理排序

java.lang.ClassNotFoundException : sun. jdbc.odbc.JdbcOdbcDriver 发生异常。为什么?

sql - 在 T-SQL 查询中,仅需要获取根元素的属性名称-值对

sql-server - 使用sql中的批量插入将文本文件的行号存储在表中

Java 控制台(Eclipse、Mac)

java - Java 中 Cloudfoundry VCAP_SERVICE 的包装器?

android - 当我想在 Room 中存储数据时 NOT NULL 约束失败

mysql - 计算 mysql 中具有 null 结果的枚举值

sql - 如何按月份和业务区域只选择最终值?

sql - 如何对时间段进行分组并检查休息时间