Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java sql删除行_Java_Sql_Database_Sql Delete - Fatal编程技术网

Java sql删除行

Java sql删除行,java,sql,database,sql-delete,Java,Sql,Database,Sql Delete,您好,我正在尝试从数据库中删除一行。我没有得到任何错误,但它什么也没做,任何帮助或建议都将是伟大的 公共静态void DeleteRow(字符串名称){ 试试{ Class.forName(“com.mysql.jdbc.Driver”); Connection Connection=DriverManager.getConnection(url、用户名、密码); PreparedStatement st=connection.prepareStatement(“从表中删除,其中name=“+n

您好,我正在尝试从数据库中删除一行。我没有得到任何错误,但它什么也没做,任何帮助或建议都将是伟大的

公共静态void DeleteRow(字符串名称){
试试{
Class.forName(“com.mysql.jdbc.Driver”);
Connection Connection=DriverManager.getConnection(url、用户名、密码);
PreparedStatement st=connection.prepareStatement(“从表中删除,其中name=“+name+”;”);
st.executeUpdate();
}捕获(例外e){
系统输出打印ln(e);
}
}

我猜name在DB中是一个varchar类型,所以请这样做

PreparedStatement st=connection.prepareStatement(“从表中删除,其中name='“+name+”;”;
用单引号将名称括起来

另外,这不是您使用的方式,也不是使用Preparedstatement的正确方式

我们可以这样做:

PreparedStatement st=connection.prepareStatement(“从name=?”的表中删除”);
st.setString(1,名称);
st.executeUpdate();
//您的完整代码在正确准备声明之后
公共静态void DeleteRow(字符串名称){
试试{
Class.forName(“com.mysql.jdbc.Driver”);
Connection Connection=DriverManager.getConnection(url、用户名、密码);
PreparedStatement st=connection.prepareStatement(“从名称=?”的表中删除”);
st.setString(1,名称);
st.executeUpdate();
}捕获(例外e){
系统输出打印ln(e);
}
}

必须关闭每个打开的连接,否则它将无法实现,并且不会显示任何错误。第一课

公共静态void DeleteRow(字符串名称){
试试{
Class.forName(“com.mysql.jdbc.Driver”);
Connection Connection=DriverManager.getConnection(url、用户名、密码);
PreparedStatement st=connection.prepareStatement(“从表中删除,其中name=“+name+”;”);
st.executeUpdate();
connection.close();
}捕获(例外e){
系统输出打印ln(e);
}
}

希望这对您有所帮助

您永远不要在Java中创建带有字符串连接的SQL语句,因为它很容易受到SQL注入的攻击。请这样做

String selectSQL = "DELETE FROM Table WHERE name = ?";
connection.prepareStatement(selectSQL);
preparedStatement.setString(1, name);

试试这个,兄弟。使用语句

Statement stmt = connection.createStatement();
String SQL = "DELETE FROM Table WHERE name = '"+name+"'";
stmt.executeUpdate(SQL);
这会奏效的 String del=“从表中删除,其中name=(“+name+”)”


:)

你希望它做什么?@jeremyjjbrown无需转义单引号您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解在“Table WHERE name=”UserTest''@user3268379您的表名是什么?表是中的保留关键字mysql@jeremyjjbrown是的,这就是为什么我提到这不是正确的preparedStatement方法,而且我还建议如何处理易受SQl注入攻击的代码。
          Class.forName("oracle.jdbc.driver.OracleDriver");
          Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE", "MANASH_APPN","MANASH");
          PreparedStatement ps = con.prepareStatement("delete from EMP21 where empid = ?");
           ps.setInt(1,90);
           ps.executeUpdate();
          con.commit();
          System.out.println("Records Delete Successfully....");
         con.close();