2016-01-14 3 views
0

Я хотел бы получить доступ к строковой переменной из другого класса, чтобы поместить ее в SQlite DB, но я получаю сообщение об ошибке «не может быть разрешен или не поле Вот код 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

создать ts как глобальную переменную, затем получить доступ –

+0

Определить строку ts; после имени класса, тогда доступ –

ответ

1

Поскольку вы пытаетесь получить доступ к локальной переменной из другого класса. лучше тогда идти вперед с глобальным кодом variable.update, как, что только одна линия определяют после класса

public class timestamp { 
String ts;// Define Here (global variable) 
} 
0

Вам нужно создать акцесора внутри класса и изменения «ц» глобальной переменной. Таким образом, когда вы instatiate этот класс, вы можете просто получить его, используя что-то вроде:

MyClass.getStringName(); 

где «getStringName()» это что-то вроде:

public String getStringName() 
{ 
    return ts; 
} 
0

все переменные в методах класса , а не в классе. В классе добавьте переменную String, а не в метод класса.

Смежные вопросы