不帅 发表于 2015-1-18 11:43:37

JAVA编程:经由过程socket会见数据库

java也能做一些底层语言开发做的事情(难度很高,不是java顶尖高手是做不来的),会见|数据|数据库公布者:flyfox

Tip:经由过程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这些最基本的,嘿嘿,就算你是高手的话,在大行的企业级应用的话还是需要框架的,一个好的框架确实能构解决许多问题。

透明 发表于 2015-1-21 13:21:51

不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。

简单生活 发表于 2015-1-24 15:05:44

有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)

愤怒的大鸟 发表于 2015-2-1 17:07:56

Java 编程语言的风格十分接近C、C++语言。

蒙在股里 发表于 2015-2-5 08:40:45

自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。

冷月葬花魂 发表于 2015-2-5 14:09:27

Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。

活着的死人 发表于 2015-2-8 05:28:14

是一种为 Internet发展的计算机语言

飘飘悠悠 发表于 2015-2-24 09:08:31

是一种突破用户端机器环境和CPU

海妖 发表于 2015-3-15 02:58:25

一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从

因胸联盟 发表于 2015-3-17 12:34:43

学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。

老尸 发表于 2015-3-22 04:50:55

http://www.jdon.com/去下载,或到同济技术论坛的服务器ftp://nro.shtdu.edu.cn去下,安装上有什么问题,可以到论坛上去提问。

小魔女 发表于 2015-3-27 18:50:45

一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从

莫相离 发表于 2015-4-10 10:10:21

是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言

飘灵儿 发表于 2015-4-13 00:14:11

是一种为 Internet发展的计算机语言

金色的骷髅 发表于 2015-4-14 05:56:14

还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。

再现理想 发表于 2015-4-16 10:09:17

是一种使网页(Web Page)产生生动活泼画面的语言

精灵巫婆 发表于 2015-5-2 01:12:17

关于设计模式的资料,还是向大家推荐banq的网站 http://www.jdon.com/,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。

admin 发表于 2015-5-2 23:54:34

是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言

若相依 发表于 2015-6-14 21:06:13

Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
页: [1]
查看完整版本: JAVA编程:经由过程socket会见数据库