Организация доступа к базам данных в ИнтернетРефераты >> Программирование и компьютеры >> Организация доступа к базам данных в Интернет
catch( java.io.UnsupportedEncodingException e ) { return Str;}
return Str;
}
public String getServletInfo() {
return "Поиск в базе данных ";
}
private String RemoveTrash(String str){
return new String(str);
}
// преобразование в нижний регистр
public String toLow(String str){
char old[] = str.toCharArray();
char news[] = new char[str.length()];
char c;
for (int i =0; i<str.length(); i++){
c = old[i];
switch (c) {
case 'А' : {c = 'а';break;}
case 'Б' : {c = 'б';break;}
case 'В' : {c = 'в';break;}
case 'Г' : {c = 'г';break;}
case 'Д' : {c = 'д';break;}
case 'Е' : {c = 'е';break;}
case 'Ё' : {c = 'ё';break;}
case 'Ж' : {c = 'ж';break;}
case 'З' : {c = 'з';break;}
case 'И' : {c = 'и';break;}
case 'Й' : {c = 'й';break;}
case 'К' : {c = 'к';break;}
case 'Л' : {c = 'л';break;}
case 'М' : {c = 'м';break;}
case 'Н' : {c = 'н';break;}
case 'О' : {c = 'о';break;}
case 'П' : {c = 'п';break;}
case 'Р' : {c = 'р';break;}
case 'С' : {c = 'с';break;}
case 'Т' : {c = 'т';break;}
case 'У' : {c = 'у';break;}
case 'Ф' : {c = 'ф';break;}
case 'Х' : {c = 'х';break;}
case 'Ц' : {c = 'ц';break;}
case 'Ч' : {c = 'ч';break;}
case 'Ш' : {c = 'ш';break;}
case 'Щ' : {c = 'щ';break;}
case 'Ъ' : {c = 'ъ';break;}
case 'Ы' : {c = 'ы';break;}
case 'Ь' : {c = 'ь';break;}
case 'Э' : {c = 'э';break;}
case 'Ю' : {c = 'ю';break;}
case 'Я' : {c = 'я';break;}
default : {news[i]=c;}
}// switch
news[i] = c;
}
return new String(news);
}
//
private String TagRemove(String s){
boolean inTag = false;
boolean tag = false;
int sn = 0;
char c;
int m = s.length();
char[] cd = new char[m];
char[] old = s.toCharArray();
char cMD = (char) MD2;
for (int i=0; i<m; i++)
{c=old[i];
if (tag) { c=' '; tag = false; }
else if ( c == cMD ) { c=' '; tag = true;}
cd[i] = c;
}
return new String(cd);
}
//
public void dbFileRead(String dbNamePath, PrintStream out, String query) {
String mAvtor = null; // 100
String msAvtor = null; // 700
String mName = null; // 245
String mPrinter = null; // 260
String mSize = null; // 300
String mKey = null; // 653
String mSeria = null; // 490
String mBBK = null; // 91
String mKaIndex = null; // 90
long fPosMarker = 0, // Позиция относительно начала
fPosData = 0; //
boolean done = false,
Avtor = false;
int mC =0,
mE =0; // Счетчик
byte Jumper[] = new byte[5]; // Размер запяси - символьный
int JIndex = 0, // Размер запяси - числовой
JTemp = 0, // Размер данных + словарь
MIndex = 0, // Счетчик для массива
MTemp = 0; // Счетчик полей
if (query != null){
try { RandomAccessFile dbfile = new RandomAccessFile(dbNamePath,"r");
// Цикл чтения файла по маркерам
while (fPosMarker != dbfile.length()) {
try { mC++;
dbfile.seek(fPosMarker);
dbfile.read(Jumper);
String jBuf = new String(Jumper);
JIndex = Integer.parseInt(jBuf,10);
int b = 0;
// Поиск конца словаря
while ( b != MD){
dbfile.seek(fPosMarker+24+MIndex);
b = dbfile.read();
MTemp++;
MIndex = MTemp;
}
MTemp= MTemp - 1;
// чтение Словаря из файла в отдельный массив
byte Dic[] = new byte[MTemp];
dbfile.seek(fPosMarker+24);
dbfile.read(Dic);
// чтение полей данных из файла в массив
fPosData = fPosMarker+24+MTemp;
String sDic = new String(Dic);
byte MarcRec[] = new byte[JIndex-24-MTemp];
dbfile.seek(fPosData);
dbfile.read(MarcRec);
int DI2 = 0,
DI3 = 0,
DI4 = 0,
DI5 = 0,
PNum = 0, // Номер поля числовой
PLength = 0, // Длинна поля числовая
PStart = 0; // Начальная позиция поля чиловая
// сканирование номеров полей
while ( DI2 != MTemp){
DI3=DI2+3;
String DStr = sDic.substring(DI2,DI3);// Номер поля
DI4=DI3+5;
String DStr2 = sDic.substring(DI3,DI4);// Начальная позиция
DI5=DI4+4;
String DStr3 = sDic.substring(DI4,DI5);// Длинна поля
DI2=DI2+12;
PLength = Integer.parseInt(DStr3,10);// Узнаем длинну поля
PStart = Integer.parseInt(DStr2,10);// Узнаем начало поля
PNum = Integer.parseInt(DStr,10);// Код
byte Pole[] = new byte[PLength];
// Чтение поля из файла
for (int PIndex = 0; PIndex < PLength; PIndex++) {
Pole[PIndex] = MarcRec[PStart+PIndex];
}
String Pol = new String(Pole);
if (Pol == null) Pol=" ";
switch (PNum) {
case 100 : { mAvtor = TagRemove(Pol.substring(5));break;}
case 700 : { msAvtor = TagRemove(Pol.substring(5));break;}
case 245 : { mName = TagRemove(Pol.substring(5));break;}
case 490 : { mSeria = TagRemove(Pol.substring(5));break;}
case 91 : { mBBK = TagRemove(Pol.substring(5));break;}
case 90 : { mKaIndex = TagRemove(Pol.substring(5));break;}
case 260 : { mPrinter = TagRemove(Pol.substring(5));break;}
case 300 : { mSize = TagRemove(Pol.substring(5));break;}
case 653 : { mKey = TagRemove(Pol.substring(5));break;}
default : {}
}// switch
}// конец проверки полей
if ( mAvtor == null) mAvtor=" ";
if ( msAvtor == null) msAvtor=" ";
if ( mName == null) mName=" ";
if ( mPrinter == null) mPrinter=" ";
if ( mSize == null) mSize=" ";
if ( mKey == null) mKey=" ";
MarcRecord Rec = new MarcRecord( mAvtor,
msAvtor,
mName,
mPrinter,
mSize,
mKey,
mSeria,
mBBK,
mKaIndex);
if ( Rec.rAvtor.indexOf(query) != -1 ||
Rec.rsAvtor.indexOf(query) != -1 ||
Rec.rName.indexOf(query) != -1 ||
Rec.rKey.indexOf(query) != -1)
{ mE++;
out.println("<table width=\"461\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">"+
"<tr bgcolor=\"#3399FF\">"+
"<td colspan=\"3\" class=\"text\"> Автор: "+
"<font color=\"#000000\">"+
Rec.rAvtor+" "+
Rec.rsAvtor+
"</font></td></tr><tr>"+
"<td colspan=\"3\" valign=\"top\" class=\"bodytext\">"+mE+". "+mC+
" <b>Название:</b> "+
Rec.rName+"<br>"+
Rec.rPrinter+" "+
Rec.rSize+"<br>"+
Rec.rBBK+" "+
Rec.rKaIndex+" "+
Rec.rSeria+
"</td></tr></table>");
}
fPosMarker = fPosMarker+JIndex;
MTemp = 0;
MIndex = 0;
}
catch (IOException e) {