需要以下代码的帮助。
我正在尝试从同一个表中查询并更新记录。
import java.sql.* ;
class Connect
{
public static void main( String args[] )
{
try
{
// Load the database driver
Class.forName( "com.microsoft.sqlserver.jdbc.SQLServerDriver" ) ;
// Get a connection to the database
Connection conn = DriverManager.getConnection( "jdbc:sqlserver://localhost:1433;user=sa;password=root;databaseName=blueprint") ;
// Print all warnings
for( SQLWarning warn = conn.getWarnings(); warn != null; warn = warn.getNextWarning() )
{
System.out.println( "SQL Warning:" ) ;
System.out.println( "State : " + warn.getSQLState() ) ;
System.out.println( "Message: " + warn.getMessage() ) ;
System.out.println( "Error : " + warn.getErrorCode() ) ;
}
// Prepare a statement
String sql = "select DN, WD from table1 ";
Statement cs = conn.createStatement();
// Execute the query
ResultSet rs = cs.executeQuery(sql) ;
// Loop through the result set
int i = 0;
while( rs.next() )
System.out.println( rs.getString("DN") + " " + rs.getString("WD") ) ;
String dm = rs.getString("DN");
String wi = rs.getString("WD");
iupdateQuery(i, dm, wi);
i++;
// Close the result set, statement and the connection
rs.close() ;
cs.close() ;
conn.close() ;
}
catch( SQLException se )
{
System.out.println( "SQL Exception:" ) ;
// Loop through the SQL Exceptions
while( se != null )
{
System.out.println( "State : " + se.getSQLState() ) ;
System.out.println( "Message: " + se.getMessage() ) ;
System.out.println( "Error : " + se.getErrorCode() ) ;
se = se.getNextException() ;
}
}
catch( Exception e )
{
System.out.println( e ) ;
}
}
private void iupdateQuery(int i, String dm, String wi) {
String sdm = dm;
String swi = within;
String query = "UPDATE table1 SET WDIO ='" + swi
+ "' WHERE (DN ='" + sdm + "');";
// debug
System.out.println(i + ". " + query);
try {
Statement update = conn.createStatement();
update.executeUpdate(query);
} catch (Exception e) {
// debug out output this way
System.err.println("Mysql Statement Error: " + query);
e.printStackTrace();
}
}
}
如果我执行,请输入以下错误。
C:\test>javac Connect.java
Connect.java:48: non-static method iupdateQuery(int,java.lang.String,java.lang
tring) cannot be referenced from a static context
iupdateQuery(i, dm, within);
^
Connect.java:91: cannot find symbol
symbol : variable conn
location: class Connect
Statement update = conn.createStatement();
^
2 errors
如果我做错了,请告诉我。
答案 0 :(得分:4)
使方法保持静态,如下所示:
private static void iupdateQuery(int i, String dm, String wi) {
...
答案 1 :(得分:3)
尝试将iupdateQuery
方法更改为静态:
private static void iupdateQuery(int i, String dm, String wi) {
由于您从main
调用此方法,并且main
是静态的,因此该方法也必须是静态的,除非您从对象调用此方法。
答案 2 :(得分:1)
将方法更改为static ,因为您是从静态方法调用它,在本例中是main
方法。
private static void iupdateQuery(int i, String dm, String wi)
我也看到了错误
你有
while( rs.next() )
System.out.println( rs.getString("DN") + " " + rs.getString("WD") ) ;
String dm = rs.getString("DN");
String wi = rs.getString("WD");
iupdateQuery(i, dm, wi);
i++;
你错过了{}
,如果不是你只是在第一行System.out.println( rs.getString("DN") + " " + rs.getString("WD") ) ;
应该是。
while( rs.next() )
{
System.out.println( rs.getString("DN") + " " + rs.getString("WD") ) ;
String dm = rs.getString("DN");
String wi = rs.getString("WD");
iupdateQuery(i, dm, wi);
i++;
}