仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1127|回复: 18
打印 上一主题 下一主题

[学习教程] JAVA编程:经由过程socket会见数据库

[复制链接]
不帅 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:43:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
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[colcount];
StringcolLabel[]=newString[colcount];
intcolType[]=newint[colcount];
StringcolTName[]=newString[colcount];
intcolPrec[]=newint[colcount];
intcolScale[]=newint[colcount];

theResult+="
";
for(inti=1;i<=colcount;i++)
{
colSize[i-1]=metaData.getColumnDisplaySize(i);
colLabel[i-1]=metaData.getColumnLabel(i);
colType[i-1]=metaData.getColumnType(i);
colTName[i-1]=metaData.getColumnTypeName(i);
colPrec[i-1]=metaData.getPrecision(i);
colScale[i-1]=metaData.getScale(i);

if(colSize[i-1]<1+colLabel[i-1].length())
colSize[i-1]=1+colLabel[i-1].length();
theResult+=rightPad(colLabel[i-1],colSize[i-1]);
}

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[i-1]);
}
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++语言。
蒙在股里 该用户已被删除
5#
发表于 2015-2-5 08:40:45 | 只看该作者
自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。
冷月葬花魂 该用户已被删除
6#
发表于 2015-2-5 14:09:27 | 只看该作者
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
活着的死人 该用户已被删除
7#
发表于 2015-2-8 05:28:14 | 只看该作者
是一种为 Internet发展的计算机语言
飘飘悠悠 该用户已被删除
8#
发表于 2015-2-24 09:08:31 | 只看该作者
是一种突破用户端机器环境和CPU
海妖 该用户已被删除
9#
发表于 2015-3-15 02:58:25 | 只看该作者
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
因胸联盟 该用户已被删除
10#
发表于 2015-3-17 12:34:43 | 只看该作者
学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。
老尸 该用户已被删除
11#
发表于 2015-3-22 04:50:55 | 只看该作者
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
小魔女 该用户已被删除
12#
发表于 2015-3-27 18:50:45 | 只看该作者
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
莫相离 该用户已被删除
13#
发表于 2015-4-10 10:10:21 | 只看该作者
是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言
飘灵儿 该用户已被删除
14#
发表于 2015-4-13 00:14:11 | 只看该作者
是一种为 Internet发展的计算机语言
金色的骷髅 该用户已被删除
15#
发表于 2015-4-14 05:56:14 | 只看该作者
还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。
再现理想 该用户已被删除
16#
发表于 2015-4-16 10:09:17 | 只看该作者
是一种使网页(Web Page)产生生动活泼画面的语言
精灵巫婆 该用户已被删除
17#
发表于 2015-5-2 01:12:17 | 只看该作者
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
admin 该用户已被删除
18#
发表于 2015-5-2 23:54:34 | 只看该作者
是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言
若相依 该用户已被删除
19#
发表于 2015-6-14 21:06:13 | 只看该作者
Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-9 01:44

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表