如何使用另一个类的字符串变量

时间:2016-01-14 10:29:56

标签: java sqlite

我想从另一个类访问一个字符串变量,将它放入一个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值或错误。 非常感谢提前!

3 个答案:

答案 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,而不是在类方法中。