String sql = "DELETE FROM student WHERE id = '" + id + "'"
但是上述方式存在sql注入风险,
可以使用
perstmt = conn.prepareStatement("DELETE FROM student WHERE id = ?")
perstmt.setString(1,id)
楼上的乱说 getString()方法是从 1 开始的,不是从0.你这个问题可能是这样的 String sql = "select count('男')as c1 from user where dept='"+dept+"'"这个sql语句中的 as c1 在数据库中当然没问题,但是你result=rs.getInt("c1")就有问题了,getInt()方法后的参数是你结果集中的index或者是数据库中的列名,这个sql语句得到结果集中的数据肯定就一条 ,所以你直接 result=rs.getInt(1)试试看 我也没试过 你看对不对。
我看了下你的代码,这里有问题rs = ptmt.executeQuery(sql)PreparedStatement.executeQuery()这个方法是没有参数的,你加上了参数,因为PreparedStatement是Statement的子类,这样实际上是调用了Statement.executeQuery(sql)这个方法,而你并没有在数据库端编译sql语言,所以返回的rs是空的。
把参数去掉试试
ptmt = conn.prepareStatement(sql)
rs = ptmt.executeQuery()//去掉参数
rs.first()
Java 使用executeUpdate向数据库中创建表格一、创建mysql.ini文件,配置如下
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/select_test
user=root
pass=123456
这样以后修改数据库的配置直接在mysql.ini文件中修改。
二、编写代码
initParam方法: 获得mysql.ini中的数据
createTale方法: 连接数据库,并且executeUpdate执行sql语句。此例的sql文件为创建表语句。
main方法: 传入Sql语句。
class ExecuteDDL {
private String driver
private String url
private String user
private String pass
Connection conn
Statement stmt
public void initParam(String paramFile) throws Exception {
Properties props = new Properties()
props.load(new FileInputStream(paramFile))
driver = props.getProperty("driver")
url = props.getProperty("url")
user = props.getProperty("user")
pass = props.getProperty("pass")
}
public void createTale(String sql) throws Exception{
try {
Class.forName(driver)
conn = DriverManager.getConnection(url,user,pass)
stmt = conn.createStatement()
stmt.executeUpdate(sql)
}
finally
{
if (stmt != null) {
stmt.close()
}
if (conn != null) {
conn.close()
}
}
}
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
ExecuteDDL ed = new ExecuteDDL()
ed.initParam("src/mysql.ini")
ed.createTale("create table student " +
"(id int, " +
"name varchar(50), " +
"num varchar(20) )")
System.out.println("Creating table success!")
}
注意事项:传入的Sql语句最好在MySql测试通过,并且传入的mysql.int文件的路径必须正确。
当执行完毕后,在MySql的select_test数据库中查看该Student表是否已经创建成功了。
三、使用executeUpdate方法,向表中插入数据。
将上面的创建表的Sql语句改为插入数据表的语句,执行executeUpdate方法,其结果就是想表中插入数据。
创建insertSql变量。
private static String insertSql = "insert into student values(1,'XiaoMing','06108787')"
执行插入语句。
ed.createTale(insertSql)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)