Tag: prepared statement

在sql server上使用jdbc PreparedStatement获取查询计划

使用Statment,resultSet.getObject将查询计划作为xml返回 Connection conn = getConnection(); String query = ” SET SHOWPLAN_XML on “; Statement st = conn.createStatement(); boolean execute=st.execute(query); log.info(“execute status {} ” , execute); query = ” SELECT ATMPROFILES.TERMID as COLUMNID, ATMPROFILES.TERMID as COLUMNNAME FROM ATMPROFILES (NOLOCK) ” + ” WHERE Authprocessname = ‘ATMST’ ” + “ORDER BY ATMPROFILES.TERMID “; ResultSet rs = st.executeQuery(query); […]

在准备好的语句中连接字符串的方法

我有一个Web应用程序,需要根据用户的输入将其数据存储在特定的表中。 例如,如果用户输入代码“A”,他们的数据将保存到DatabaseA,而如果用户输入代码“B”,则数据将保存到DatabaseB。 我需要知道是否有办法操作预准备语句,以便将代码连接到预准备语句字符串的末尾。 我有3个表,MachineProblem2A,2B和2C。 有没有办法简单地将代码连接到我下面的sql字符串的末尾? String sql=”select * from MachineProblem2″; PreparedStatement pstmnt= conn.prepareStatement(sql); 我尝试了不同的方法,如“select * from MachineProblem2”+ employeeCode但它不起作用。 我试过“select * from MachineProblem2”.concat(employeeCode)它也不能正常工作。 我甚至尝试过我在条件语句中创建的函数,它依赖于employeeCode,例如if(employeeCode.equals(“A”)返回“select * from MachineProblem2A” 所有这些都给了我一个空指针exception或java.lang.InstantiationException:bean employeeRecords在范围错误中找不到 。 我在sqlRet()和getAllRecords()上获得Null指针,但数据输入正确存储在指定的表中。 我在检索输出时遇到问题。 private String sqlInsert(){ if(employeeCode.equals(“A”) && employeeSales > 2500){ return “insert into MachineProblem2A(EmployeeName, EmployeeCode, EmployeeSales, EmployeeGross, EmployeeCommission, EmployeeResult)”+ “values(?,?,?,?,?,?)”; }else if(employeeCode.equals(“B”) && employeeSales > 2000){ […]

Java:从字符串创建日期对象并插入MySQL

任何时候我必须处理java中的日期/时间,这让我很难过 我正在尝试解析一个字符串并将其转换为日期对象以插入preparepared语句中。 我一直试图让这个工作,但我没有运气。 当我去编译类时,我也会收到有用的错误消息。 “线程中的exception”主“java.lang.Error:未解决的编译问题:PreparedStatement类型中的方法setDate(int,Date)不适用于参数(int,Date)” 呃WTF? 这是违规代码。 for(int i = 0; i < flights.size(); i++){ String[] details = flight[i].toString().split(":"); DateFormat formatter ; formatter = new SimpleDateFormat("ddMMyyyy"); Date date = formatter.parse(details[1]); PreparedStatement pstmt = conn.prepareStatement(insertsql); pstmt.setString(1, details[0]); pstmt.setDate(2, date); pstmt.setString(3, details[2] + "00"); pstmt.setString(4, details[3]); pstmt.setString(5, details[4]); pstmt.setString(6, details[5]); pstmt.setString(7, details[6]); pstmt.setString(8, details[7]); pstmt.setString(9, details[8]); pstmt.executeUpdate(); […]

Java Prepared语句未执行

我创建了一个小的3层程序,包括:前端 – > servlet – >数据库。 前端我在表格中输入一些细节。 它们被传递给一个servlet,它将呈现一些HTML并显示输入到表单中的值,同时还调用一个DatabaseHelper类。 然后,DatabaseHelper将这些相同的值连接并插入表中。 我知道值正在传递给servlet类ok,因为它们正在HTML中显示。 所以问题必须在准备好的声明中。 问题是,我看不出声明本身的任何错误。 当我查询表本身时,那里没有数据。 数据库连接是有用的,因为我可以使用硬编码语句将值插入数据库,而不是准备好的语句。 以下是我使用的声明。 任何建议都非常感谢。 public void addRegisterDetails(String name, String email, String country, String password, ){ try{ String driver = “com.mysql.jdbc.Driver”; Class.forName(driver).newInstance(); // Make db connection con = DriverManager.getConnection(url, USERNAME, PASSWORD); st = con.createStatement(); String query = ” INSERT INTO user_information (name, email, country, […]

SQL 1064语法使用JDBC预准备语句时出错

我有: String query = “INSERT INTO Basestations VALUES(?, ?, ?, ?, ?, ?, ?,” + “?, ?, ?, ?, ?, ?, ?, ?)”; PreparedStatement prep = conn.prepareStatement(query); prep.setInt(1, profile.getNetworkId()); prep.setInt(2, profile.getBaseStationId()); prep.setInt(8, profile.getLoadLevel()); prep.setInt(11, profile.getPositionX()); prep.setInt(12, profile.getPositionY()); prep.setInt(13, profile.getPort()); prep.setDouble(3, profile.getSignalStrength()); prep.setDouble(4, profile.getFrequency()); prep.setDouble(6, profile.getMaxBitrate()); prep.setDouble(7, profile.getGuaranteedBitrate()); prep.setDouble(10, profile.getRange()); prep.setString(5, profile.getNetworkType()); prep.setString(9, profile.getProvider()); prep.setString(14, profile.getCharging()); […]

即使没有插入新行,为什么executeUpdate返回1?

这是我非常简单的表格(Postgres): CREATE TABLE IF NOT EXISTS PERFORMANCE.TEST ( test text NOT NULL UNIQUE ); 如果我尝试使用下面的命令从数据库插入一个字符串,一切都按预期工作,毫不奇怪,数据库中出现一个新行。 insert into performance.test (test) values (‘abbbbaw’); 但是,如果我想通过JDBC插入String,则不会插入任何内容,尽管preparedStatement.executeUpdate()始终返回1。 下面是我应该工作的方法,但事实并非如此。 请告诉我,如果我遗漏了一些明显的东西。 我想补充一点,我从来没有得到任何SQLException。 private void storePerformance() { Connection conn= initializePerformanceConnection(); if (conn!= null) { PreparedStatement insertPS = null; try { insertPS = conn.prepareStatement(“insert into performance.test (test) values (?)”); insertPS.setString(1, queryVar); int i = […]

使用PreparedStatement将行插入数据库

我想使用PreparedStatement在表中插入一行。 该表有3列(int,String,String)。 问题是int列是AUTO_INCREMENT,所以我想将该变量留空并让数据库完成该工作(它是一个id)。 虽然没有发现如何做到这一点! 这是一个MySQL数据库。

如何使用准备好的声明

有人建议使用预备声明,但我不知道如何使用它。 我的代码需要做哪些更改? try { Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”); System.out.println(“\n Driver loaded”); Connection con = DriverManager.getConnection(“jdbc:odbc:wanisamajDB”); Statement stmt = con.createStatement(); System.out.println(“statement is created”); // System.out.println(Integer.parseInt(cbregn.getSelectedItem().toString())); String qry = ” UPDATE Registration1 SET RegistrationNo = ‘”+cbregn.getSelectedItem()+”‘,SeniorPerson = ‘”+cbnm.getSelectedItem()+”‘, NativePlace = ‘”+tfplace.getText()+”‘,Kul = ‘”+tfkul.getText()+”‘, Gotra = ‘”+tfgotra.getText()+”‘ ,KulSwami = ‘”+tfswami.getText()+”‘, ResidensialAddress = ‘”+taraddr.getText()+”‘ , PinCode = ‘”+tfpcd.getText()+”‘, STDcode = ‘”+tfstdcode.getText()+”‘,TelephoneNo = […]

预编译JDBC PreparedStatement有什么作用?

“预编译”语句的作用是什么,因为我已经看到,如果我编写一个带有错误SQL语法的预准备语句,那么编译不会报告任何问题! 因此,如果预编译准备好的语句不检查语法有效性,它究竟做了什么?

返回受Java中SQL UPDATE语句影响的行数

我正在使用MySQL数据库并通过Java访问它。 PreparedStatement prep1 = this.connection.prepareStatement(“UPDATE user_table SET Level = ‘Super’ WHERE Username = ?”); prep1.setString(1, username); 上面的更新语句工作正常,但是我想获得受此语句影响的行数。 这可能吗?