我正在用Java编写一个简单的程序,该程序使用用户插入的信息编写数据库。 我已经为一个保存这些信息的按钮实现了一个监听器,因此更新了连接的服务器(因此连接正常)。 我想得到第一个空行并写上它。通过这种方式,我可以编写整个数据库调用相同的方法。 有什么建议吗? 这是代码(它从一个监听器开始)
Object src = e.getSource();
if (src == insTeaching)
{
String teachName = teachNameField.getText();
int studentsNumber = (int) studentsNumberSpinner.getValue();
DBConnect connection = new DBConnect();
connection.updateDB(teachName, studentSNumber);
}
其中updateDB是以下方法:
public void updateDB (String name, int student){
try {
String query1 = "UPDATE subject SET name='" + name
+"', student='" + student+"' WHERE (conditions...);
PreparedStatement statement=con.prepareStatement(query1);
statement.executeUpdate();
显然这个方法目前无法工作..如何在第一个空行上写入来实现它?通过这种方式,每次用户点击按钮时我都可以唤起该方法。 我的情况清楚了吗?
这是我的问题的解决方案。我想在这里插入这个解决方案,以帮助所有有我自己问题的访问者。
@Rahul,我已经尝试过你所写的内容并且它不起作用。问题出在“名称为空”。我也试过“name = null”,但没有什么比这更好了!所以我更改了匹配的列:我选择了学生(默认值为0),我写的就像你告诉我的那样。所以:
WHERE Student = '0' LIMIT 1
限制1强制程序只写第一个而不是全部。现在它有效! 所以我感谢你!
答案 0 :(得分:1)
您似乎想到了像Excel表这样的数据库表,您可以无限地向下滚动以查找无限数量的空行。但这不是SQL数据库的工作方式。数据库表仅包含具有数据的行。该表只是在最后一行填充后结束。
通常,数据库表没有“空白”行(并不是说技术上不可能至少有一个空行,但这种情况并不常见)。如果要向表中添加新条目,请使用INSERT命令:
INSERT INTO subject VALUES ("English", "Bob");
这将向表中添加一个新行。假设您的表有两列,新行的这两个字段现在将具有值“English”和“Bob”。
UPDATE命令用于更改表中已有的一行或多行
UPDATE subject SET subject="Math" WHERE name="Bob";
此命令将搜索名称为“Bob”的所有行,并将主题更改为“Math”。
答案 1 :(得分:0)
要获取列中的空白行,您可以写下: -
select * from table where column IS NULL;
试试这个: -
public void updateDB (String name, int student){
try
{
final String q = "UPDATE subject SET name=?, student=? WHERE name = (select name from subject where name is null");
final PreparedStatement ps=con.prepareStatement(q);
ps.setString(1,name);
ps.setInt(2,student);
ps.executeUpdate();
答案 2 :(得分:0)
他们这样做的方式对所有类型的SQL注入攻击都是开放的,并且只是简单的错误。
final String q = "UPDATE subject SET name=?, student=? WHERE name = (select name from subject where name is null");
final PreparedStatement ps=con.prepareStatement(q);
ps.setString(1,name);
ps.setInt(2,student);
final int recsAffected = ps.executeUpdate();
阅读JavaDocs PreparedStatement
WHERE name = (select name from subject where name is null)
基本上是在说WHERE name is null
,如果这是你的意图,那么这里的子选择是不正确的。
来自评论:
“我必须更新一些行,但我不想更新相同的内容 行!!所以我想浏览行。“
我假设您有一个列表,您想要更新每个具有不同数据的空白行。如果没有看到您的表格的确切模式,并且互联网上的任何人都无法回答您填写的数据。
使用架构DDL更新您的问题,以及您要更新的整行数据的一些示例,也许有人可以为您提供进一步的帮助。否则这个问题将被搁置。