JAVA编程:经由过程socket会见数据库
java也能做一些底层语言开发做的事情(难度很高,不是java顶尖高手是做不来的),会见|数据|数据库公布者:flyfoxTip:经由过程socket会见数据库,分Clinet,Display,sqlServer三个类
Client.java
importjava.awt.*;
importjava.io.*;
importjava.net.*;
importjava.applet.*;
publicclassClientextendsApplet
{
publicTextAreachat_txt;
privateTextFieldsql_txt;
privateButtonconnect,execute;
privateSocketsoc=null;
privatePrintStreamps=null;
Listenlisten;
publicvoidinit()
{
chat_txt=newTextArea();
sql_txt=newTextField(20);
connect=newButton("Connect");
execute=newButton("Execute");
execute.disable();
Panelpp=newPanel();
pp.setLayout(newFlowLayout());
pp.add(sql_txt);
pp.add(connect);
pp.add(execute);
add("North",pp);
add("Center",chat_txt);
}
publicbooleanaction(Eventevt,Objectobj)
{
if(evt.targetinstanceofButton)
{
Stringlabel=(String)obj;
if(label.equals("Connect"))
{
try{
soc=newSocket(InetAddress.getLocalHost(),4700);
ps=newPrintStream(soc.getOutputStream());
ps.println("HELLO");
ps.flush();
listen=newListen(this,soc);
listen.start();
}catch(Exceptione)
{
chat_txt.setText(e.toString());
disconnect();
}
connect.setLabel("Disconnect");
execute.enable();
}elseif(label.equals("Disconnect"))
disconnect();
elseif(label.equals("Execute"))
{
if(sql_txt.getText()!=null)
{
ps.println("FIND");
ps.flush();
ps.println(sql_txt.getText());
ps.flush();
}
}
}
returnfalse;
}
publicvoiddisconnect()
{
if(soc!=null)
{
try{
listen.stop();
ps.println("QUIT");
ps.flush();
soc.close();
}catch(Exceptione){}
finally{
listen.stop();
listen=null;
soc=null;
}
execute.disable();
connect.setLabel("Disconnect");
}
}
}
classListenextendsThread
{
Socketsocket=null;
DataInputStreamdis=null;
Clientparent=null;
publicListen(Clientp,Sockets)
{
parent=p;
socket=s;
try{
dis=newDataInputStream(socket.getInputStream());
}catch(Exceptione){}
}
publicvoidrun()
{
Stringline=null;
while(true)
{
try{
line=dis.readLine();
}catch(Exceptione){}
if(line!=null)
parent.chat_txt.appendText(line);
}
}
}
Display.java
/********************************************
格局化输入数据库纪录,出自<<利用java举行SQL数据库程序计划>>
前往值为格局化的字符串
********************************************/
importjava.sql.*;
classDisplayextendsObject
{
ResultSettheResultSet;
StringtheResult;
publicvoiddisplay()
{}
publicvoidsetResult(ResultSetresult)
{
theResultSet=result;
}
publicStringgetString()
throwsSQLException,NoClassDefFoundError
{
theResult="";
ResultSetMetaDatametaData=theResultSet.getMetaData();
intcolcount=metaData.getColumnCount();
intcolSize[]=newint;
StringcolLabel[]=newString;
intcolType[]=newint;
StringcolTName[]=newString;
intcolPrec[]=newint;
intcolScale[]=newint;
theResult+="
";
for(inti=1;i<=colcount;i++)
{
colSize=metaData.getColumnDisplaySize(i);
colLabel=metaData.getColumnLabel(i);
colType=metaData.getColumnType(i);
colTName=metaData.getColumnTypeName(i);
colPrec=metaData.getPrecision(i);
colScale=metaData.getScale(i);
if(colSize<1+colLabel.length())
colSize=1+colLabel.length();
theResult+=rightPad(colLabel,colSize);
}
theResult+="
";
introw=0;
while(theResultSet.next())
{
row++;
for(inti=1;i<=colcount;i++)
{
Stringcolvalue=theResultSet.getString(i);
if(colvalue==null)
colvalue="";
theResult+=rightPad(colvalue,colSize);
}
theResult+="
";
}
theResult+="
("+row+"rowsincluded)
";
returntheResult;
}
privateStringrightPad(Strings,intlen)
{
intcurlen=s.length();
if(curlen>len)
returnrepString("*",len);
return(s+repString("",(len-curlen)));
}
privateStringrepString(Strings,inttimes)
{
Stringresult="";
for(inti=0;i<times;i++)
result+=s;
returnresult;
}
}
sqlServer.java
importjava.awt.*;
importjava.sql.*;
importjava.io.*;
importjava.net.*;
importDisplay;
publicclasssqlServer
{
publicstaticvoidmain(String[]args)
{
System.out.println("Waitingforconnection");
try{
ServerSocketsession=newServerSocket(4700);
handleRequestshandler=null;
System.out.println("Waitingforconnection");
while(true)
{
Socketsocket=null;
socket=session.accept();
if(socket==null)
continue;
System.out.println("Connectionmade");
handler=newhandleRequests(socket);
handler.start();
}
}catch(Exceptione)
{
System.out.println("客户毗连失利"+e);
}
}
}
classhandleRequestsextendsThread
{
privateDataInputStreamin=null;
privatePrintStreamout=null;
privateSocketsocket=null;
ConnectiontheConnection=null;
StatementtheStatement=null;
ResultSettheResultSet=null;
Displaydisplay=null;
publichandleRequests(Sockets)
throwsIOException
{
socket=s;
in=newDataInputStream(socket.getInputStream());
out=newPrintStream(socket.getOutputStream());
}
publicvoidopenConnection()
{
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
if(theConnection!=null)
theConnection.close();
theConnection=DriverManager.getConnection("jdbc:odbc:test","admin","1234");
theStatement=theConnection.createStatement();
display=newDisplay();
}catch(Exceptione)
{
System.out.println(e);
}
}
publicvoidrun()
{
openConnection();
try{
Stringline=null;
while(true)
{
line=in.readLine();
if(line!=null)
line=line.trim();
if(line.equals("FIND"))
{
line=in.readLine();
line=line.trim();
theResultSet=theStatement.executeQuery(line);
display.setResult(theResultSet);
out.print(display.getString());
out.flush();
}
if(line.equals("QUIT"))
break;
if(line.equals("HELLO"))
{
out.println("Welcometojoinus");
out.flush();
}
}
in.close();
out.close();
socket.close();
}catch(Exceptione)
{
System.out.println(e);
}
}
}
首先第一点:jsp,servlet,javabean这些最基本的,嘿嘿,就算你是高手的话,在大行的企业级应用的话还是需要框架的,一个好的框架确实能构解决许多问题。 不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。 有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想) Java 编程语言的风格十分接近C、C++语言。 自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。 Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。 是一种为 Internet发展的计算机语言 是一种突破用户端机器环境和CPU 一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从 学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。 http://www.jdon.com/去下载,或到同济技术论坛的服务器ftp://nro.shtdu.edu.cn去下,安装上有什么问题,可以到论坛上去提问。 一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从 是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言 是一种为 Internet发展的计算机语言 还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。 是一种使网页(Web Page)产生生动活泼画面的语言 关于设计模式的资料,还是向大家推荐banq的网站 http://www.jdon.com/,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。 是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言 Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
页:
[1]