打算做个3层结构的软件 客户端--服务器端----数据库
我不想客户端直接访问数据库 想让客户端通过服务器端操作数据库!
请问有什么好办法!!
DataInputSteam 和DataOutputSteam 不能传递对象阿!!ObjectOutputStream和ObjectInputStream 可以单用在网络上老报错!那位知道有什么好办法可以让客户端通过服务器端操作数据库?先谢了!!
我不想客户端直接访问数据库 想让客户端通过服务器端操作数据库!
请问有什么好办法!!
DataInputSteam 和DataOutputSteam 不能传递对象阿!!ObjectOutputStream和ObjectInputStream 可以单用在网络上老报错!那位知道有什么好办法可以让客户端通过服务器端操作数据库?先谢了!!
解决方案 »
- 新手求助 File(File parent, String child)和separator分隔符的使用
- JPanel背景渐变颜色问题
- 单个 boolean 使用 int 来表示,占 4 个字节,而 boolean 数组是使用 byte 数组来表示的。 ???
- 如何快速将class文件添加到jar包中?
- 了解一下java的方法调用机制
- unsigned int 返回 long
- 请问eclipse的swt中如何写tray程序?100分!进来就有!不够加!
- 一個簡單的問題.
- 想把jbuilder7 enterprise trial在linux里安装。
- 最简单的问题!
- 客户端程序中的class文件可以封装起来吗?
- Tomcat服务器线程满宕机问题 【在线等】【求助各位使用过Tomcat】的高手
然后你用ObjectInputStream 和ObjectOutputStream就可以传递对象了
同意楼上的 实现流化
密切关注
好的 implements java.io.Serializable 才行?
我本来打算传递一个 Connection 对象 在客户端使用Connection对象操作数据库
这要怎么做啊 能实现吗?
java把网络流、文件流都统一了
传递的类
public class conn implements/* Connection*/ Serializable {
static ResultSet rs;
public conn() {
try {
Class.forName(
"com.microsoft.jdbc.sqlserver.SQLServerDriver");
String url =
"jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=noriko";
String user = "sa";
String pass = "sa";
Connection conn = DriverManager.getConnection(url, user, pass);
Statement stmt = conn.createStatement(ResultSet.
TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
ResultSet rs = stmt.executeQuery("select * from login");
} catch (Exception ex) {
}
}
ResultSet getResultSet(){
return rs;
}
}客户端
public static void main(String[] args) { try {
Socket so = new Socket(InetAddress.getByName("127.0.0.1"), 214);
conn co = (conn)new ObjectInputStream(so.getInputStream()).
readObject();
ResultSet rs = co.getResultSet();
while (rs.next()) { //错在这里了
System.out.println(rs.getString("name"));
} System.out.println("001");
rs.close();
so.close();
} catch (Exception ex) {
ex.printStackTrace();
} }
服务器端:
public static void main(String[] args) {
try {
conn co=new conn();
ServerSocket ss = new ServerSocket(214);
Socket so = ss.accept();
new ObjectOutputStream(so.getOutputStream()).writeObject(co);
so.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
帮忙看看怎么做啊?
class www.xiaohua007.com{public static void main(String [] args){
System.out.println("
C君去医院割包皮,剃毛的时候(割包皮要先把毛剃光)是一个漂亮护士,成年男士嘛, 血 气方刚,看到漂亮MM拎着他那东西,心术当然就不正了,脑子歪几歪,那话儿“蹭”就竖起来,本来做这种术前准备时那话儿竖起来也算是正常的生理反应,只不过C君最后竟然射了,搞得护士手上衣服上都是,气得那护士直发抖,心里说“看我 怎么收拾你”。
手术过后C君住院,第二天那护士MM走到C君床前,拉高护士裙露出大腿、底裤,嗲嗲的说:你觉得这内裤好看吗?C君一看,热血沸腾,只听下面“啪啪”几声,惨了,爆线了。
只好推进手术室再缝一次,痛苦第二天,护士MM又过来了,站在C君床前,解开二个扣子,波涛汹涌跃然而出,嗲嗲的对着C君说:“你看看人家的身材如何呀?”,“ 啪啪”C君下身一串声响,又爆线了。
做完第三次缝线的那天晚上,护士MM带着二个漂亮女同事来到C君床前,至于发生了什么事就不得而知了,总之最后C君足足住了一个多月的医院,据说那话儿都已经缝得无落针之处了。
");
//www.xiaohua007.com
}}
象集合类(Collection、Map等,如果存储了不能序列化的对象也是不能序列化的,如果存储的对象都能序列化,则可序列化。java中很多对象是不能序列化的,如线程、Socket,Stream等
这里的ResultSet就属于这种不能序列化的,你上面的程序要小心啊,很可能多个线程同时去修改ResuletSet rs,这会出错的...
ResultSet rs = stmt.executeQuery("select * from login");//这一行重新定义了一个
我找到解决的办法了 有类似问题的人 可以看看阿BORLAND 的Jbuilder 的包里有个 Database 类(建立数据库的连接) 这个类实现Serializable的序列化
可以传递这个类,把数据库的操作移交给客户端
再有Database 返回操作集!!呵呵 这样的三层有点不名副其实 但也不错了!!