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

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

31.05.2017, 14:08. Показов 5138. Ответов 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
Ответ Создать тему
Новые блоги и статьи
изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru