Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Как грамотно сформировать оператор insert? / 16 сообщений из 16, страница 1 из 1
27.11.2012, 10:07:52
    #38054309
genya-123
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как грамотно сформировать оператор insert?
Необходимо вставить в БД запись состоящую из 30-ти полей... Сформировал строку получился длиннющий... Да еще и кавычки в данных разные наводят смуту... Получился такой оператор, что и показывать стыдно..Как сделать более красивый запрос???

insert into t001rep set Name=qqq,TransformU=НКФ-110-57У11;ClassPresition=0.5;LocationInstall=ПС № 29В «Транзитная» 110/6 кВ, ОРУ-110 кВ, 2 СШ, «ТН-110 кВ», ф. А;VoltageFirst=110000/3;VoltageSecond=100/3;Frequency=50.0;Enterprise=ЗВА, 1980 г.;Belong=ОАО «СУЭК-Красноярск», Филиал «Разрез Назаровский»;NameRefrenceStandart=Делитель напряжения;TypeRefrenceStandart=ДН-220пт;NumberRefrenceStandart=8.0;ErrorD80Percent=2.4;ErrorD80=0.098;ErrorD100Percent=3.3;ErrorD100=0.098;ErrorD120Percent=3.3;ErrorD120=0.98;DeviceCompareType=РКЗ.01ПТ;DeviceCompareNumber=176.0;DeviceCompareDataCheck=Tue Apr 05 00:00:00 KRAT 2011;ViewCheck=0;Voltage100=400.0;odps80_1=0.33;odps100_1=0.29;odps120_1=0.28;odps80_2=3.3;odps100_2=5.6;odps120_2=10.4;odps80_1_1=-0.31;odps100_1_1=-0.35;odps120_1_1=-0.36;odps80_2_1=1.4;odps100_2_1=3.8;odps120_2_1=4.7;pptb80_1=0.33;pptb100_1=0.29;pptb120_1=0.28;pptb80_2=3.3;pptb100_2=5.6;pptb120_2=10.4;pptb80_1_1=-0.31;pptb100_1_1=-0.36;pptb80_2_1=4.7;pptb100_2_1=0.0;pptb120_2_1=0.0;Resolution=0;InspectionMan=А.Г. Варфаламеев;DataInspection=Thu Mar 01 00:00:00 KRAT 2012;UserName=;WorksNumber=12134;

Вот кусок программы, формирующий этот оператор...
Код: 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.
56.
57.
58.
59.
60.
 String StringSets="Name=qqq,";
     StringSets+="TransformU="+Rprt.TransformU+";";
     StringSets+="ClassPresition="+Rprt.ClassPresition+";";
     StringSets+="LocationInstall="+Rprt.LocationInstall+";";
     StringSets+="VoltageFirst="+Rprt.VoltageFirst+";";
     StringSets+="VoltageSecond="+Rprt.VoltageSecond+";";
     StringSets+="Frequency="+Rprt.Frequency+";";
     StringSets+="Enterprise="+Rprt.Enterprise+";";
     StringSets+="Belong="+Rprt.Belong+";";
     StringSets+="NameRefrenceStandart="+Rprt.NameRefrenceStandart+";";
     StringSets+="TypeRefrenceStandart="+Rprt.TypeRefrenceStandart+";";
     StringSets+="NumberRefrenceStandart="+Rprt.NumberRefrenceStandart+";";
     StringSets+="ErrorD80Percent="+Rprt.ErrorD80Percent+";";
     StringSets+="ErrorD80="+Rprt.ErrorD80+";";
     StringSets+="ErrorD100Percent="+Rprt.ErrorD100Percent+";";
     StringSets+="ErrorD100="+Rprt.ErrorD100+";";
     StringSets+="ErrorD120Percent="+Rprt.ErrorD120Percent+";";
     StringSets+="ErrorD120="+Rprt.ErrorD120+";";
     StringSets+="DeviceCompareType="+Rprt.DeviceCompareType+";";
     StringSets+="DeviceCompareNumber="+Rprt.DeviceCompareNumber+";";
     StringSets+="DeviceCompareDataCheck="+Rprt.DeviceCompareDataCheck+";";
     StringSets+="ViewCheck="+Rprt.ViewCheck+";";
     StringSets+="Voltage100="+Rprt.Voltage100+";";
     StringSets+="odps80_1="+Rprt.odps80_1+";";
     StringSets+="odps100_1="+Rprt.odps100_1+";";
     StringSets+="odps120_1="+Rprt.odps120_1+";";
     StringSets+="odps80_2="+Rprt.odps80_2+";";
     StringSets+="odps100_2="+Rprt.odps100_2+";";
     StringSets+="odps120_2="+Rprt.odps120_2+";";
     StringSets+="odps80_1_1="+Rprt.odps80_1_1+";";
     StringSets+="odps100_1_1="+Rprt.odps100_1_1+";";
     StringSets+="odps120_1_1="+Rprt.odps120_1_1+";";
     StringSets+="odps80_2_1="+Rprt.odps80_2_1+";";
     StringSets+="odps100_2_1="+Rprt.odps100_2_1+";";
     StringSets+="odps120_2_1="+Rprt.odps120_2_1+";";
     StringSets+="pptb80_1="+Rprt.pptb80_1+";";
     StringSets+="pptb100_1="+Rprt.pptb100_1+";";
     StringSets+="pptb120_1="+Rprt.pptb120_1+";";
     StringSets+="pptb80_2="+Rprt.pptb80_2+";";
     StringSets+="pptb100_2="+Rprt.pptb100_2+";";
     StringSets+="pptb120_2="+Rprt.pptb120_2+";";
     StringSets+="pptb80_1_1="+Rprt.pptb80_1_1+";";
     StringSets+="pptb100_1_1="+Rprt.pptb120_1_1+";";
     StringSets+="pptb80_2_1="+Rprt.pptb80_2_1+";";
     StringSets+="pptb100_2_1="+Rprt.pptb100_2_1+";";
     StringSets+="pptb120_2_1="+Rprt.pptb120_2_1+";";
     StringSets+="Resolution="+Rprt.Resolution+";";
     StringSets+="InspectionMan="+Rprt.InspectionMan+";";
     StringSets+="DataInspection="+Rprt.DataInspection+";";
     StringSets+="UserName="+Rprt.UserName+";";
     StringSets+="WorksNumber="+Rprt.WorksNumber+";";
     
     System.out.println("insert into t001rep set "+StringSets);
	ResultSet rs = null;
	try {
		rs = stmt.executeQuery("insert into t001rep set "+StringSets);
	} catch (SQLException e1) {
		// TODO Auto-generated catch block
		e1.printStackTrace();
	}
...
Рейтинг: 0 / 0
27.11.2012, 10:26:16
    #38054325
javapecker
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как грамотно сформировать оператор insert?
genya-123,
а чем параметры не угодили?
...
Рейтинг: 0 / 0
27.11.2012, 10:34:00
    #38054340
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как грамотно сформировать оператор insert?
genya-123,

1. параметры верно сказали
2. если там 30 полей, то менее 30 строк не будет. Можно только в отдельный модуль вынести. Чтобы глаза не мозолило.
...
Рейтинг: 0 / 0
27.11.2012, 10:40:07
    #38054352
grasoff.net
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как грамотно сформировать оператор insert?
genya-123
Код: java
1.
"TransformU="+Rprt.TransformU+";";

одна точка с запятой здесь лишняя
...
Рейтинг: 0 / 0
27.11.2012, 12:22:43
    #38054542
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как грамотно сформировать оператор insert?
Если это не bulk/batch операции и нагрузка не сильная то можно любой ORM-entity сделать. Будет
красиво и кошерно. И не стыдно показать будет
...
Рейтинг: 0 / 0
27.11.2012, 12:34:35
    #38054569
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как грамотно сформировать оператор insert?
mayton,
правда кода будет точно больше (суммарного) ))
...
Рейтинг: 0 / 0
27.11.2012, 13:21:46
    #38054700
pasha701
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как грамотно сформировать оператор insert?
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
    private static final String[] FIELDS = { "TransformU", "ClassPresition", "LocationInstall", "VoltageFirst", "VoltageSecond" }; 
    String generateSQL(Rprt Rprt){
        String [] values ={Rprt.TransformU,Rprt.ClassPresition,Rprt.LocationInstall,Rprt.VoltageFirst,Rprt.VoltageSecond};
        StringBuilder sql=new StringBuilder();
        for (int i = 0; i < FIELDS.length; i++) {
            sql.append(FIELDS[i]+"="+values[i]+";");
        }
        sql.deleteCharAt(sql.length()-1);
        return sql.toString();
    }
...
Рейтинг: 0 / 0
27.11.2012, 13:27:22
    #38054711
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как грамотно сформировать оператор insert?
pasha701,
Код: java
1.
процедура ("TransformU", "ClassPresition", "LocationInstall", "VoltageFirst", "VoltageSecond", ........



будет тот же эффект.
...
Рейтинг: 0 / 0
27.11.2012, 13:45:24
    #38054739
javapecker
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как грамотно сформировать оператор insert?
Petro123,

ну и пусть будет, зато не будет этой жути со строками в коде
...
Рейтинг: 0 / 0
27.11.2012, 13:54:15
    #38054759
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как грамотно сформировать оператор insert?
javapeckerPetro123,
ну и пусть будет, зато не будет этой жути со строками в коде
первый твой пост - параметры и убрать из БЛ и кода завернув в утилиты.
...
Рейтинг: 0 / 0
27.11.2012, 14:20:07
    #38054815
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как грамотно сформировать оператор insert?
Petro123mayton,
правда кода будет точно больше (суммарного) ))
Ему нужно красиво. Это и будет красиво и в духе технологии.
...
Рейтинг: 0 / 0
27.11.2012, 14:22:48
    #38054824
javapecker
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как грамотно сформировать оператор insert?
mayton,
в духе технологии
Нажмиии на кнопку, получишь результааат, и твоя мечта осуществииииицааааа
...
Рейтинг: 0 / 0
27.11.2012, 14:41:06
    #38054863
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как грамотно сформировать оператор insert?
maytonPetro123mayton,
правда кода будет точно больше (суммарного) ))
Ему нужно красиво. Это и будет красиво и в духе технологии.
я не спорю, что:
- вверху его код - это мапинг на SQL код
- при ОРМ будет маппинг на ОРМ

выбирай на вкус)))
/topic/12992#57518
...
Рейтинг: 0 / 0
27.11.2012, 22:11:28
    #38055561
Йуный джавистЪ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как грамотно сформировать оператор insert?
Код: java
1.
2.
Map<String,String> data = ...;
executeQuery("insert into t001rep  populate_record(null::t001rep,?::hstore)",data);
...
Рейтинг: 0 / 0
27.11.2012, 22:12:23
    #38055562
Йуный джавистЪ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как грамотно сформировать оператор insert?
Работает в Postgresql
...
Рейтинг: 0 / 0
27.11.2012, 22:17:02
    #38055568
Йуный джавистЪ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как грамотно сформировать оператор insert?
авторodps120_2=10.4;odps80_1_1=-0.31;odps100_1_1=-0.35;odps120_1_1=-0.36;odps80_2_1=1.
Эдгар Кодд недоволен твоим проектированием БД.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Как грамотно сформировать оператор insert? / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]