我想从另一个类访问一个字符串变量,将它放入一个SQlite数据库但是我得到一个错误"无法解决或不是一个字段 这是代码 timestamp.java
import java.io.File;
import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;
import org.apache.commons.io.FileUtils;
public class timestamp {
public static String doSomething() throws IOException {
File source = new File("C:/Users/India/Desktop/Test/Sub/Test.docx");
SimpleDateFormat sdf = new SimpleDateFormat("MM-dd-yyyy HH-mm-ss-ms");
String ts=sdf.format(source.lastModified());
System.out.print(ts);
//String[] TimeStamp = source.lastModified().toString();
String name = source.getName();
String ext = name.substring(name.lastIndexOf("."));
name = name.substring(0, name.lastIndexOf("."));
String outFileName = name + " " + ts + ext;
//System.out.println(" new file name is " + outFileName);
File destination = new File("C:/Users/India/Desktop/Test", outFileName);
FileUtils.copyFile(source,destination);
return ts;
}
public static void main (String [] args) throws IOException
{ doSomething();}}
SQLiteJDBC.java
import java.io.IOException;
import java.sql.*;
public class SQLiteJDBC{
public static void InsertValues( String args[] ) throws IOException
{ timestamp t = new timestamp();
String var = t.ts;
System.out.println(t.ts);
Connection c = null;
Statement stmt = null;
try {
Class.forName("org.sqlite.JDBC");
c = DriverManager.getConnection("jdbc:sqlite:test.db");
c.setAutoCommit(false);
System.out.println("Opened database successfully");
stmt = c.createStatement();
PreparedStatement prep1 = c.prepareStatement ("INSERT INTO ACTIONLOG VALUES (?,?, ?);") ;
prep1.setString(1, var);
prep1.addBatch();
c.setAutoCommit(false);
prep1.executeBatch();
c.setAutoCommit(true);
stmt.close();
c.commit();
c.close();
} catch ( Exception e ) {
System.err.println( e.getClass().getName() + ": " + e.getMessage() );
System.exit(0);
}
System.out.println("Records created successfully");
}
public static void main( String args[] ) throws IOException
{ InsertValues(args);
}
}
我无法访问数据库类中的ts字符串。我得到一个NULL值或错误。 非常感谢提前!
答案 0 :(得分:1)
因为您正在尝试从另一个类访问本地变量。那么继续使用全局variable.update代码,比如只有一行在类
之后定义public class timestamp {
String ts;// Define Here (global variable )
}
答案 1 :(得分:0)
您需要在类中创建一个访问器方法,并将'ts'更改为全局变量。这样,当您实例化该类时,您可以使用以下内容检索它:
MyClass.getStringName();
其中'getStringName()'类似于:
public String getStringName()
{
return ts;
}
答案 2 :(得分:0)
所有变量都在类方法中,而不是在类区域中。 在Class中添加变量String,而不是在类方法中。