Просмотр полной версии : Присвоить значение из бд
Всем привет! Гуру джавы подскажите пожалуйста как из бд присвоить значение к стрингу, и обновлять его при определенном условии?
Сделал набросок, но думалка что-то не думает, и сомнение в правильности (новичок еще) кода..
class blablabla()
{
public static String str1;
public static String str2;
public int something = get.Rnd(123);
public void First(String strOne, String strTwo)
{
Connection con = null;
PreparedStatement statement = null;
ResultSet rs = null;
try
{
con = DatabaseFactory.getInstance().getConnection();
statement = con.prepareStatement("SELECT value1=?, value2=? FROM table1;");
statement.setString(1, strOne);
statement.setString(2, strTwo);
statement.execute();
DbUtils.close(statement);
rs = statement.executeQuery();
if (rs.next())
{
strOne(String.valueOf(rs.getString("value1")));
strOne(String.valueOf(rs.getString("value2")));
str1 = strOne;
str2 = strTwo;
}
else if (rset.getInt(1) > 0)
{
if(something == 123)
{
// Update
statement = con.prepareStatement("UPDATE table1 SET value1=123456;");
statement.setEscapeProcessing(true);
statement.setString(1, strOne);
statement.executeUpdate();
}
else
{
System.out.println("nothing >>>>>>>>");
}
}
}
catch (Exception e)
{
_log.error(StringUtils.EMPTY, e);
}
finally
{
DbUtils.closeQuietly(con, statement, rs);
}
}
}
коннект к бд, если его нет
Код:
{
Connection conn = null;
String url = "jdbc:mysql://1.2.3.4:3306/";
String dbName = "testdbname";
String driver = "com.mysql.jdbc.Driver";
String userName = "testusername";
String password = "12345";
try {
Class.forName(driver).newInstance();
conn = DriverManager.getConnection(url + dbName, userName, password);
System.out.println("Connected to the database");
//если нужно закрывать коннект, т.е я лично использую это дело как проверялку работы мускула на чём-то
conn.close();
System.out.println("Disconnected from database");
} catch (Exception e) {
e.printStackTrace();
}
}
достать что-то и присвоить что-то
sorenocopypaste.webpEnmity · 17 Фев 2017 в 18:53' data-fancybox="lb-thread-4939" data-lb-caption-extra-html="" data-lb-sidebar-href="" data-single-image="1" data-src="https://mmo-dev.info/attachments/sorenocopypaste-webp.20329/" data-type="image" style="cursor: pointer;" title="sorenocopypaste.webp">
можешь использовать как пример
за код не ругать, это было давно и неправда
тут по факту в коде у тебя после executeQuery() получается ResultSet, который ты итерируешь и тащишь из него данные.
подставлять какие-то значения вместо "someshet=?" можешь с помощью smth.set(LongStringIntAnyAnotherShit)(иденти фикатор в виде цифры, значение);
значение можно получать с геттеров без проблем, как видно выше в коде.
к примеру если ты разобрал пачку значений из ResultSet, ты можешь кинуть их куда-нибудь в мапку и потом с ними работать. таким же образом ты можешь присваивать их к чему-то.
т.е к примеру, весь код писать не буду, куски сверху идентичные:
Код:
**** some shit here****
String jafaisatrap = "";
**** some shit here ****
jafaisatrap = resultSet.getString("название_колонки_с_которой_ мы_тащим_значение");
если мутишь чан с говном мапку с данными, то будет что-то вроде такого:
Код:
kakayaToRandomnayaMapa kartaGovnokoda = new kakayaToRandomnayaMapa<>();
**** some shit here ****
while(resultSet.next()) {
**** some shit here ****
kakietoDannie.govnokod = resultSet.getString("govnokod");
kakietoDannie.aPravdaGovnokod = resultSet.getBoolean("anepizdiwlitichasom")
kartaGovnokoda.put(K,V); //k - key, v - value, pogugli sam rabotu s mapkami, moi iuniy drug
}
class kakietoDannie {
String govnokod;
boolean aPravdaGovnokod;
}
т.е в конце каждой итерации резултсета ты делаешь чёт с этими данными и всё. надо тебе их затолкать куда-то - заталкивай прям тут.
как обновлять его при определённом условии - конкретнее, шо за условие.
в теории тебе надо ту же матёрую схему из девяностых провернуть и не париться, но вдруг ты уже накосячил и тебя во второй раз пуля ждёт.
больше инфоса
Спасибо за хороший пинок) сейчас попробую по этому примеру)
коннект к бд, если его нет
больше инфоса
например
Код:
//есть
string one = "111111"; //(значение берется из базы)
//потом условие какое либо
if(земля == планета){
one = "222222"; // данные изменяются в бд
}
if(земля == луна){
one = "333333"; тоже обновляется значение
}
З.Ы. Ваш пример я распечатаю и в рамочку поставлю))))
Запрещено публиковать исходный код без BB-кода — CODE.
Спасибо за хороший пинок) сейчас попробую по этому примеру)
например
Код:
//есть
string one = "111111"; //(значение берется из базы)
//потом условие какое либо
if(земля == планета){
one = "222222"; // данные изменяются в бд
}
if(земля == луна){
one = "333333"; тоже обновляется значение
}
З.Ы. Ваш пример я распечатаю и в рамочку поставлю))))
т.е как я понимаю тебе надо, если в рандом_название_метода срабатывает какое-то условие, вкорячивать это дело в базу?
получаешь от DatabaseFactory если он есть \ делаешь коннект к базе если его нет, делаешь statement с INSERT'ом.
алгоритм тот же, код не особо разнится.
Код:
%%%% всё тот же говнокод шо и сверху%
PreparedStatement statement = connection.prepareStatement("SELECT * FROM bbs_buffer WHERE player_id=?;"); ->>>>>
PreparedStatement statement = connection.prepareStatement("INSERT INTO sometable VALUES(someshit) ;");
если по идентификатору, к примеру таблица у нас имеет столбы id, value и называется govnokod ->
Код:
PreparedStatement statement = connection.prepareStatement("INSERT INTO govnokod VALUES(id, YOUR_STRING_HERE_MYFRENDE) WHERE id=? ;");
если с кодом заталкивания в этот стейтмент всякого мусора:
Код:
PreparedStatement statement = connection.prepareStatement("INSERT INTO govnokod VALUES(?, ?) WHERE id=? ;");
statement.setInt(1, TVOY_KLASSNIY_ID);
statement.setInt(2, TVOY_KLASSNIY_STRING);
statement.setInt(3, TVOY_KLASSNIY_ID);
ResultSet resultSet = statement.executeQuery();
и дальше по аналогии работаешь с данными стейтмента. я забыл шо у нас тут инсерт, шо с ним делать ещё надо.
чтоб вынести в отдельный метод апдейт этой строки (на самом деле в твоём случае не обязательно, но если хочешь красивостей, то пишешь метод вроде такого):
Код:
// public - если в отдельном классе валяется, так можешь спокойно костылить private
public static void davaiVkoryachimGovnokod(int someUnfuckableId, String someUnfuckableShietdata){
%%%% тут какой-то говнокод про то как ты к базе пути ищешь %%%%
PreparedStatement statement = connection.prepareStatement("INSERT INTO govnokod VALUES(?, ?) WHERE id=? ;");
statement.setInt(1, someUnfuckableId);
statement.setInt(2, someUnfuckableShietdata);
statement.setInt(3, someUnfuckableId);
ResultSet resultSet = statement.executeQuery();
//название в зависимости от коннекта
connection.close(); // никогда не забывай закрывать поток
}
и просто при срабатывании чего-то тупо вызываешь метод, передавая в него id и String с мусором.
Код:
//есть
string one = "111111"; //(значение берется из базы)
//потом условие какое либо
if(земля == планета){
one = "222222"; // данные изменяются в бд
}
if(земля == луна){
one = "333333"; тоже обновляется значение
}
а, да, забыл совсем. вот тебе смесь твоего и моего говнокода
Код:
String one = "";
// код у истинного говнокодера должен иметь ид такое же классное, как и сам говнокодер. вкорячим сюда 228 лулза ради.
if(код == говно){
one = "222222";
davaiVkoryachimGovnokod(228, one);
}
if(земля == луна){
System.out.println("если я выполнился, значит мир сошёл с ума"); // этого достаточно в этом условии
}
я забыл шо у нас тут инсерт, шо с ним делать ещё надо.
но что-то у меня не получается данные присвоить стрингу...
Код:
public class mainOne
{
public static String first;
public void thisIsClass1()
{
String pervaya = "";
String vtoraya= "";
String three= "";
String four= "";
String five= "";
String six= "";
String seven= "";
String new1= "";
String new2= "";
Connection con = null;
PreparedStatement statement = null;
ResultSet rs = null;
try
{
con = DatabaseFactory.getInstance().getConnection();
statement = con.prepareStatement("INSERT INTO table VALUES(?, ?) WHERE id=? AND id2=?;");
statement.setString(1, "111111");
statement.setString(2, pervaya);
statement.setString(3, "00--00--00");
ResultSet resultSet = statement.executeQuery();
con.close();
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
DbUtils.closeQuietly(con, statement, rs);
}
first=pervaya;
}
public thisIsClass2()
{
pervaya = "9999999";
vtoraya= "8888888";
three= "3333333333333";
four= "444444444444";
five= "5555555555";
six= "666666666";
seven= "77777777";
new1= "8888";
new2= "111111111";
}
но что-то у меня не получается данные присвоить стрингу...
сложный вопрос - а нахера сначала инсертить данные в бд, а потом эти же данные тащить в стринг?
у тебя вся логика где-то в бороде, посмотри шо за ужас ты написал
вообще шо из всего вышенаписанного ты пытаешься получить?
я вижу кашу из вышеописанного чана с дерьмом, к примеру, а ты что видишь?
и вообще, ты ИДЕху юзаешь какую-либо?
я скопировал посмотреть шо на этот ужас скажет телега, она меня из чана поливает до сих пор за такой ад.
ладно, давай проедемся катком по коду.
чудотворный класс thisIsClass2 - на кой болт он нужен и какое у него предназначение?
зачем в отдельном классе не классе, но по названию классе, хранить этот мусор?
во-первых выкидываем в помойку этот класс2, мы ж не совсем дауны, верно?
мало того что у тебя переменные объявлены внутри другого метода, что значит что конкретно таким образом ты просто написал 9 cтрок какой-то дичи, так ты ещё и юзать это пытаешься. U SRSLY MAN?
едем дальше, предположим что превратили мы этот аутистический паровоз в что-то подобное
2250e-clip-59kb[1].webpEnmity · 18 Фев 2017 в 01:40' data-fancybox="lb-thread-4939" data-lb-caption-extra-html="" data-lb-sidebar-href="" data-single-image="1" data-src="https://mmo-dev.info/attachments/2250e-clip-59kb-1-webp.20330/" data-type="image" style="cursor: pointer;" title="2250e-clip-59kb[1].webp">
есть у нас инсерт тут, окей, инсертом мы тащим в базу какой-то буллшит, окей.
вопрос - в кой чёрт у нас тут присвоение стринга к стрингу вся эта помойка с бд, если мы её не используем?
более того, после инсерта мы не имеем ResultSet'a, потому мы можем просто брать как топовые пацаны и корячить такой паровоз. когда писал предыдущий пост чёт затупил. не делай так.
Код:
//autistic mode
ResultSet resultSet = statement.executeQuery();
//govnokod.setKostiliCount(govnokod.getKostiliCount( ) - 1)
statement.executeQuery();
и так всё же, на кой болт тут вся эта помойка с бд, если нам нужно просто прикостылить строку к строке?
но ведь это ж говнина, мы ж заморачивались тут шоб у нас с бд чёт подтягивалось, а строку любой яйциент даун прикрутить сможет.
давай селектить.
b49bb-clip-68kb[1].webpEnmity · 18 Фев 2017 в 01:40' data-fancybox="lb-thread-4939" data-lb-caption-extra-html="" data-lb-sidebar-href="" data-single-image="1" data-src="https://mmo-dev.info/attachments/b49bb-clip-68kb-1-webp.20332/" data-type="image" style="cursor: pointer;" title="b49bb-clip-68kb[1].webp">
вопрос раскрыт, или нужно больше костылей в сей тред?
вопрос раскрыт, или нужно больше костылей в сей тред?
Спасибо попробовал так сделать но, почему то все равно значение строки "null", не подтягивает значение из бд
второй класс добавлен для того чтобы в нем можно было выводить значение строки)) задумка наркоманская) согласен
на словах вроде просто
объявляем строку (которую во 2 классе и выводим)
подтягиваем ее значение из бд
потом при каком либо изменении обновляем значение(которому равна строка) в бд
код в студию
Код:
//////////////////////////////////////////////////
//a1.java
public class a1
{
public static String one;
public void thisIsClass1() throws SQLException
{
Connection con = null;
PreparedStatement statement = null;
ResultSet rs = null;
try
{
con = DatabaseFactory.getInstance().getConnection();
//в бд таблица с столбцами (one - nine) в которых по дефолту параментры "333333"
statement = con.prepareStatement("SELECT one FROM table;");
statement.setString(1, "one"); // как я понял здесь в стэйтмент запихивается значение из бд
ResultSet rs = statement.executeQuery();
one = rs.getString("one");
}
catch(Exception e)
{
_log.error("", e);
}
finally
{
DbUtils.closeQuietly(con, statement, rs);
}
}
// ниже в другом методе
public void thisIsClass2()
{
Connection con = null;
PreparedStatement statement = null;
try
{
con = DatabaseFactory.getInstance().getConnection();
// произходят действия при которых меняеться значение "one"
if(1 == 1)
{
statement = con.prepareStatement("UPDATE one FROM table;");
statement.setString(1, "666666"); // как я понимаю здесь присываем данные в "one"
statement.executeUpdate();
;
}
}
catch(Exception e)
{
_log.error("", e);
}
finally
{
DbUtils.closeQuietly(con, statement);
}
}
}
//--------------------------------------------------------------------
//a2.java
import a1;
public class a2
{
public void second()
{
System.out.println(a1.one);
}
}
//////////////////////////////////////////////////
Код:
statement = con.prepareStatement("UPDATE one FROM table;");
statement.setString(1, "666666"); // как я понимаю здесь присываем данные в "one"
а собственно что в стейтменте ты меняешь, если в нём ничего нет?
алсо, те же яйца в другом месте:
Код:
statement = con.prepareStatement("SELECT one FROM table;");
statement.setString(1, "one"); // как я понял здесь в стэйтмент запихивается значение из бд
ты ничего не передаёшь, логично что там нечему меняться.
а собственно что в стейтменте ты меняешь, если в нём ничего нет?
ты ничего не передаёшь, логично что там нечему меняться.
Код:
statement = con.prepareStatement("UPDATE one FROM table WHERE one=?;");
statement.setString(1, "666666");
вот так ?
Код:
statement = con.prepareStatement("UPDATE one FROM table WHERE one=?;");
statement.setString(1, "666666");
вот так ?
я тут койчо намутил для тебя, но у нас тут сложные аутистические пароли конфирмед просто так информацию не получить.
пароль на архив - ответ на вопрос (сразу скажу что формулировка говно, но типа как мог):
как называются объекты, которые в случае изменения не обновляются, а создаются копиями с изменениями? маска ответа: i***t***e
и да, дамп таблички там же валяется, прям в комментарии
ответ на вопрос легко гуглится по вопросу, главное правильно скормить его гуглу
Спасибо) сейчас просмотрю)
там кстати всё ещё есть некоторое количество говнокода.
зафикси сам.
намекну: метод getInfos, связано с коннектом (одно условие выполняется всегда, а значит можно упростить и убрать его, немного перекатав код).
А
там кстати всё ещё есть некоторое количество говнокода.
зафикси сам.
намекну: метод getInfos, связано с коннектом (одно условие выполняется всегда, а значит можно упростить и убрать его, немного перекатав код).
Спасибо) разобрался)
И да строка была нулл, потому что я метод то написал а он нигде не использовался
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot