Форум программистов, компьютерный форум, киберфорум
Java
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/25: Рейтинг темы: голосов - 25, средняя оценка - 4.68
1 / 1 / 0
Регистрация: 01.03.2017
Сообщений: 53

Использование переменной из другого класса

31.05.2017, 14:08. Показов 5159. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
есть класс Getip, узнаю ип и записываю в String ip
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package AC;
 
import java.net.*;
import java.io.*;
public class Getip {
        
        
        public static String ip; // <---
 
        public static void main(String[] args) throws IOException {
              URL whatismyip = new URL("http://checkip.amazonaws.com");
              BufferedReader in = new BufferedReader(new InputStreamReader(
                              whatismyip.openStream()));
 
              String  ip = in.readLine(); // <---
              System.out.println(ip);
          }
         
    }
Есть другой класс mysql
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package AC;
 
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
 
/**
 * Simple Java program to connect to MySQL database running on localhost and
 * running SELECT and INSERT query to retrieve and add data.
 * @author Javin Paul
 */
 
public class mysql {
 
    // JDBC URL, username and password of MySQL server
    private static final String url = "jdbc:mysql://***:3306/ac";
    private static final String user = "***";
    private static final String password = "****";
 
    // JDBC variables for opening and managing connection
    private static Connection con;
    private static Statement stmt;
    private static ResultSet rs;
  
    String ip = new String(Getip.ip); // <---
    
    public static void main(String args[]) {
        
            
 
        try {
            
            // opening database connection to MySQL server
            con = DriverManager.getConnection(url, user, password);
 
            // getting Statement object to execute query
            stmt = con.createStatement();
        
 
    
            String[] insert = {"INSERT INTO users(ip) VALUES (ip);"}; // <---
           
            for (String sql : insert) {
             stmt.execute(sql);
         }
 
        } catch (SQLException sqlEx) {
            sqlEx.printStackTrace();
        } 
        
    }
 
}
Ип, который находится в переменной хочу записывать в БД. Но почему-то в БД приходит пустое поле. Гуглил, вроде так нужно делать. но явно что-то не так)
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
31.05.2017, 14:08
Ответы с готовыми решениями:

Использование переменной из другого класса
Как при нажатии на кнопку использовать переменную из другого класса? Есть код проекта, схематично имеющий такую структуру: package...

Взятие переменной из другого класса
Возникла небольшая проблемка У меня в 1 классе в переменную заносятся какое-то значение и я хочу его перекинуть в другой класс и вывести...

Вызов переменной из другого класса
Всем привет, я захотел сделать элементарный кукулятор, и я джавой занимаюсь около недели, так вот подскажите пожалуйста!Как вызвать...

12
90 / 89 / 23
Регистрация: 08.07.2014
Сообщений: 548
31.05.2017, 14:12
Потому что в классе Getip у тебя 2 переменных ip, в классе mysql ты обращаешься к той, которая всегда пустая.
0
1 / 1 / 0
Регистрация: 01.03.2017
Сообщений: 53
31.05.2017, 14:20  [ТС]
если в getip не создавать public static String ip;
тогда во втором классе оно жалуется ip cannot be resolved or is not a field
0
90 / 89 / 23
Регистрация: 08.07.2014
Сообщений: 548
31.05.2017, 14:24
Я тебе не говорил, что не надо создавать public static String ip;, ты этой переменной и присваивай значение, а не создавай новую.
0
1 / 1 / 0
Регистрация: 01.03.2017
Сообщений: 53
31.05.2017, 14:32  [ТС]
сделал так, но результат не изменился
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package AC;
 
import java.net.*;
import java.io.*;
public class Getip {
        
        
    public static String ip;
 
    
 
        public static void main(String[] args) throws IOException {
              URL whatismyip = new URL("http://checkip.amazonaws.com");
              BufferedReader in = new BufferedReader(new InputStreamReader(
                              whatismyip.openStream()));
 
              ip = in.readLine(); 
              System.out.println(ip);
          }
         
    }
0
90 / 89 / 23
Регистрация: 08.07.2014
Сообщений: 548
31.05.2017, 14:38
Не удивительно, раз ты тут к классу mysql нигде не обращаешься. Получил ip, вывел его в консоль и все, этот участок кода больше ничего и не делает. Это первый момент.
Второй: для чего в обоих твоих двух классах присутствует метод public static void main(String args[]) { } ?
0
1 / 1 / 0
Регистрация: 01.03.2017
Сообщений: 53
31.05.2017, 15:08  [ТС]
классы находятся в разных файлах
потому public static void main(String args[]) { } несколько раз
а зачем ip обращаться к mysql,если мне нужно получить переменную из ip в mysql?
0
90 / 89 / 23
Регистрация: 08.07.2014
Сообщений: 548
31.05.2017, 20:14
Цитата Сообщение от dropych Посмотреть сообщение
классы находятся в разных файлах
потому public static void main(String args[]) { } несколько раз
То-есть, если у тебя в проекте 10 файлов с классами, то ты в каждый из них будешь пихать public static void main(String args[]) { } ? Ты в курсе вообще, что это за метод такой ?
Цитата Сообщение от dropych Посмотреть сообщение
а зачем ip обращаться к mysql,если мне нужно получить переменную из ip в mysql?
String ip = new String(Getip.ip); - вызов пустой переменной ip. Она по-твоему сама как-то инициализироваться нужным значением должна ?

Вот это
Java
1
2
3
4
5
URL whatismyip = new URL("http://checkip.amazonaws.com");
              BufferedReader in = new BufferedReader(new InputStreamReader(
                              whatismyip.openStream()));
 
              ip = in.readLine();
Перенеси в класс mysql, смысл по двум разным классам это раскидывать.
0
1 / 1 / 0
Регистрация: 01.03.2017
Сообщений: 53
31.05.2017, 21:22  [ТС]
Цитата Сообщение от korshun84 Посмотреть сообщение
То-есть, если у тебя в проекте 10 файлов с классами, то ты в каждый из них будешь пихать public static void main(String args[]) { } ? Ты в курсе вообще, что это за метод такой ?
я в курсе, просто изначально создавал как отдельные подпрограммы и сейчас только объединяю. пока так
Цитата Сообщение от korshun84 Посмотреть сообщение
Перенеси в класс mysql, смысл по двум разным классам это раскидывать.
кроме ип, будет еще несколько данных которые будут подтягивать с других классов и будут записываться в БД, когда в отдельных файлах, удобнее редактировать
В классе ip
Java
1
2
3
4
public static String getip() {
                    return ip;
              
          }
это ж вроде и есть инициализация?
0
90 / 89 / 23
Регистрация: 08.07.2014
Сообщений: 548
01.06.2017, 06:12
Цитата Сообщение от dropych Посмотреть сообщение
это ж вроде и есть инициализация?
Нет, это просто геттер. Если ты будешь вызывать его так же, как и Getip.ip, то в итоге получишь то же самое, то-есть ничего.
Тогда уже так:
Java
1
2
3
4
5
public static String getip() {
URL whatismyip = new URL("http://checkip.amazonaws.com");
BufferedReader in = new BufferedReader(new InputStreamReader(whatismyip.openStream()));
return in.readLine();
}
0
1 / 1 / 0
Регистрация: 01.03.2017
Сообщений: 53
01.06.2017, 15:53  [ТС]
Цитата Сообщение от korshun84 Посмотреть сообщение
Нет, это просто геттер. Если ты будешь вызывать его так же, как и Getip.ip, то в итоге получишь то же самое, то-есть ничего.
Тогда уже так:
JavaВыделить код
1
2
3
4
5
public static String getip() {
URL whatismyip = new URL("http://checkip.amazonaws.com");
BufferedReader in = new BufferedReader(new InputStreamReader(whatismyip.openStream( )));
return in.readLine();
}
если делать оба класса в одном файле, тогда, если я правильно понимаю, getip должен быть мейн? ведь если mysql является main классом, выполнение программы начинается с него, и сначала программа записывает данные в бд, а потом только определяет ип? или я что-то не так понял. Кроме того,на примере с классом getip я пытаюсь разобраться как правильно собирать значения из других классов и отправлять в БД. т.к. данных будет отправляться достаточно много и не хотелось бы все это смешивать в одном файле.
если сделать как вы предложили выше, а строку заполнения БД сделать так:
Java
1
 String[] insert = {"INSERT INTO users(ip) VALUES (getip);"};
все равно в БД приходит пустое поле
0
90 / 89 / 23
Регистрация: 08.07.2014
Сообщений: 548
02.06.2017, 10:08
Лучший ответ Сообщение было отмечено dropych как решение

Решение

Цитата Сообщение от dropych Посмотреть сообщение
если делать оба класса в одном файле, тогда, если я правильно понимаю, getip должен быть мейн? ведь если mysql является main классом, выполнение программы начинается с него, и сначала программа записывает данные в бд, а потом только определяет ип?
Чувак, у тебя реально каша в голове.

Делаешь вот так:

Java
1
2
3
4
5
6
7
8
9
public class Getip {
 
        public static String getip() {
            URL whatismyip = new URL("http://checkip.amazonaws.com");
            BufferedReader in = new BufferedReader(new InputStreamReader(whatismyip.openStream()));
            return in.readLine();
        }
         
    }
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
public class mysql {
 
    // JDBC URL, username and password of MySQL server
    private static final String url = "jdbc:mysql://***:3306/ac";
    private static final String user = "***";
    private static final String password = "****";
 
    // JDBC variables for opening and managing connection
    private static Connection con;
    private static Statement stmt;
    private static ResultSet rs;
    
    public static void main(String args[]) {
        
         String ip = Getip.getip();
 
        try {
            
            // opening database connection to MySQL server
            con = DriverManager.getConnection(url, user, password);
 
            // getting Statement object to execute query
            stmt = con.createStatement();
        
 
    
            String[] insert = {"INSERT INTO users(ip) VALUES (ip);"}; // <---
           
            for (String sql : insert) {
             stmt.execute(sql);
         }
 
        } catch (SQLException sqlEx) {
            sqlEx.printStackTrace();
        } 
        
    }
 
}
И будет тебе щастье.

Добавлено через 2 минуты
Цитата Сообщение от dropych Посмотреть сообщение
все равно в БД приходит пустое поле
Так ты ерунду какую-то делаешь, а не sql запрос.
Оно вот так как-то делается.
1
1 / 1 / 0
Регистрация: 01.03.2017
Сообщений: 53
02.06.2017, 19:32  [ТС]
да, работает) спасибо
про кашу вы правы, я просто на пхп только работал, а это первый проект на java , туговато идет
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.06.2017, 19:32
Помогаю со студенческими работами здесь

Использование класса из другого модуля
В общем проблема такая . Хочу конект сделать к БД . Создал для этого &quot;логин модуль&quot; в другом проекте , так как думаю что он мне потом...

Использование класса из другого проекта
Есть 2 проекта Client и Server. Оба использует общие классы Message и IP. Запускала в консоле, там все просто, прописала пути к .java...

Как обратиться к переменной из другого класса?
Как получить значение spinnerOfHeight package net.net78.zarsite; import java.awt.event.ActionEvent; import...

Получить значение переменной из другого класса
Добрый день! Делаю простенькие часики и столкнулся со следующей проблемой: внутри класса значение переменной есть, а если я вызываю эту...

Взятие значение переменной из другого класса.
- Здравствуйте. Что-то мне подсказывает, что моя проблема слишком детская. Но так уж и быть, спрошу здесь. Попрошу сильно не смеяться, если...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru