Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсач Веб-интерфейс обработки заказов итернет...doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
972.29 Кб
Скачать

2.4. Текст сервлетов

Листинг 3. DataObject.java

package kurs_rab;

import java.sql.*;

public abstract class DataObject {

protected String selectStatement;

protected String searchStatement;

protected String insertStatement;

protected String updateStatement;

protected String deleteStatement;

public int id;

public void showSelectStatement()

{

System.out.println(this+".selectStatement = "+this.selectStatement);

}

protected DataObject[] parseData(ResultSet rs) throws SQLException

{

// возвращаем пустой массив

return new DataObject[0];

}

protected static int getRecordCount(ResultSet rs) throws SQLException

{

int cnt;

// переставляем курсор на последнюю запись набора

if(rs.last())

{

cnt=rs.getRow();

rs.beforeFirst();

return cnt;

}

else

{

return 0;

}

}

public DataObject select(Connection conn,int id) throws SQLException

{

PreparedStatement ps=conn.prepareStatement( selectStatement,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);

ps.setInt(1, id);

DataObject obj=parseData(ps.executeQuery())[0];

ps.close();

return obj;

}

}

Листинг 4. Client.java

package kurs_rab;

import java.util.*;

import java.sql.*;

public class Tovar extends DataObject

{

public String Name;

public String Last;

public String Tel;

public Tovar()

{

this.selectStatement="select id, Name, Last, tel, In, Out, Room from Clients where id=?";

this.searchStatement="select id, Name, Last, tel, In, Out, Room from Clients where 1=1";

this.insertStatement= "insert into clients (Name, Last, Tel, `In`, `Out`, Room, Tarif) values (?,?,?,`?`,`?`,?,?)";

}

@Override

protected Tovar[] parseData(ResultSet rs) throws SQLException

{

// вызываем getRecordCount для определения количества найденых записей

Tovar[] o=new Tovar[getRecordCount(rs)];

// последовательно просматриваем ResultSet

while (rs.next())

{

int i=rs.getRow()-1;

o[i]=new Tovar();

o[i].id=rs.getInt("id");

o[i].Name=rs.getString("Name");

o[i].Last=rs.getString("Last");

o[i].Tel=rs.getString("Tel");

o[i].In=rs.getString("In");

o[i].Out=rs.getString("Out");

o[i].Room=rs.getString("Room");

o[i].Tarif=rs.getString("Tarif");

}

return o;

}

public Tovar[] search(Connection conn, String Name,String Last,String Tel,String In,String Out,String Room) throws SQLException

{

String ss=this.searchStatement;

if (Name!=null)

{

//поиск по Client_ID по шаблону

ss=ss+" and `Client_Name` LIKE ?"/*+Client_Name+"'"*/;

}

if (Last!=null)

{

//поиск по Client_ID по шаблону

ss=ss+" and Client_Last_Name = ?"/*+Client_Last_Name+"'"*/;

}

if (Tel!=null)

{

//поиск по Client_ID по шаблону

ss=ss+" and Client_Phone_Number = ?"/*+Client_Phone_Number+"'"*/;

}

if (In!=null)

{

//поиск по Client_ID по шаблону

ss=ss+" and Date_In = ?"/*+Date_In+"'"*/;

}

if (Out!=null)

{

//поиск по Client_ID по шаблону

ss=ss+" and Date_Out = ?"/*+Date_Out+"'"*/;

}

if (Room!=null)

{

//поиск по Client_ID по шаблону

ss=ss+" and Room_Number = ?"/*+Room_Number+"'"*/;

}

System.out.printf(ss);

// создаем запрос

PreparedStatement ps=conn.prepareStatement(ss);

if (Name!=null)

{

ps.setString(i,Name);

i++;

}

if (Last!=null)

{

ps.setString(i,Last);

i++;

}

if (Tel!=null)

{

ps.setString(i,Tel);

i++;

}

if (In!=null)

{

ps.setString(i,In);

i++;

}

if (Out!=null)

{

ps.setString(i,Out);

i++;

}

if (Room!=null)

{

ps.setString(i,Room);

}

// выполняем запрос, вызываем метод обработки набора результатов

Tovar[] o=this.parseData(ps.executeQuery());

// закрывыем запрос

ps.close();

return o;

}

public void insert(Connection conn) throws SQLException

{

PreparedStatement ps=conn.prepareStatement(this.insertStatement);

if (this.Name!=null){ ps.setString(1,this.Name); }

else{ps.setNull(1, Types.VARCHAR);}

if (this.Last!=null){ ps.setString(2,this.Last); }

else{ps.setNull(2, Types.VARCHAR);}

if (this.Tel!=null){ ps.setString(3,this.Tel); }

else{ps.setNull(3, Types.VARCHAR);}

if (this.In!=null){ ps.setString(4,this.In); }

else{ps.setNull(4, Types.DATE);}

if (this.Out!=null){ ps.setString(5,this.Out); }

else{ps.setNull(5, Types.DATE);}

if (this.Room!=null){ ps.setString(6,this.Room); }

else{ps.setNull(6, Types.VARCHAR);}

if (this.Tarif!=null){ ps.setString(7,this.Tarif); }

else{ps.setNull(7, Types.INTEGER);}

ps.execute();

ps.close();

}

}