邀月

从.net中走来的Java爱好者
posts - 22, comments - 10, trackbacks - 0, articles - 0
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

在上两篇《Java是如何快速煮成C#的?》(一):相似的方法《Java是如何快速煮成C#的?》(一):相似的方法(2)中,我们开启了C#与Java中的话题之一:相似的方法。其实我写主这两篇文章的目的,有两个:

1、总结自己的学习历程,这个是主要的。

2、给c#转入java的同学一个快速熟悉的感觉,所以这个系列的名称也是“快速煮成”。

因为我对这两门语言仅限了解,对c#也仅限于熟悉,如有理解不妥之处,请指正。

今天我们看看这两种语言环境下纯粹的数据访问。

首先我再次声明:

1、本文不比较这两种语言的数据访问的性能差异。

2、本文不涉及各自的OR框架,如C#的ADO.NET Entity Framework,MVC,Mhibernate,spring.net,以及Java领域的Spring"Hibernate"Struts等第三方框架,只是纯粹的数据访问。

3、数据库采用MS SQL server 2008,其实也可以用mySQL,MySQL提供官方支持。oracle平时很少用,DB2没用过。
 

准备工作:一个用于测试的部门表DepartDemo,表结构如下:
邀月工作室

相关的SQL语句:

Create database Db2010Demo
go


use Db2010Demo
go



if exists (select 1
            
from  sysobjects
           
where  id = object_id('DepartDemo')
            
and   type = 'U')
   
drop table DepartDemo
go

/*==============================================================*/
/* Table: DepartDemo                                            */
/*==============================================================*/
create table DepartDemo (
   PKID                 
int                  identity(101,1),
   DName                
nvarchar(200)        null,
   DCode                
nvarchar(500)        null,
   Manager              
nvarchar(50)         null,
   ParentID             
int                  null default 0,
   AddUser              
nvarchar(50)         null,
   AddTime              
datetime             null,
   ModUser              
nvarchar(50)         null,
   ModTime              
datetime             null,
   CurState             
smallint             not null default 0,
   Remark               
nvarchar(500)        null,
   F1                   
int                  not null default 0,
   F2                   
nvarchar(300)        null,
   
constraint PK_DEPARTDEMO primary key (PKID)
)
go


--插入一条测试数据
insert into DepartDemo
select '国家统计局房产审计一科','0','胡不归',0,'DeomUser',getdate(),
'','1900-01-01',1,'专业评估全国房价,为老百姓谋福祉',0,''


--创建一个存储过程,在C#程序中用到

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[DepartDemoSelectByPKID]'AND type='P')
DROP PROCEDURE [dbo].[DepartDemoSelectByPKID]
GO


CREATE PROCEDURE [dbo].[DepartDemoSelectByPKID]
(
    
@Pkid    int
)
AS

BEGIN TRAN

    
Select * From [DepartDemo] Where [Pkid]=@Pkid

IF @@ERROR!=0
    
BEGIN
        
ROLLBACK
    
END
ELSE
    
BEGIN
        
COMMIT
    
END
GO

一、我们看看C#环境下一个数据访问的简单例子,

在vs2010中新建一控制台项目,结构如下:
邀月工作室

相应的代码,

基础数据层:

Database.cs:

using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;

namespace demo2010.database
{
    
public class DataBase
    {
        
private static string connectionString = System.Configuration.ConfigurationManager.AppSettings["GlobalsConnString"];
        
public static string ConnectionString
        {
            
get { return connectionString; }
            
set { connectionString = value; }
        }
        
#region Helpers
        
internal protected static IDataReader GetReader(string commandText, SqlParameter[] p)
        {
            
return SqlHelper.ExecuteReader(ConnectionString, CommandType.StoredProcedure, commandText, p);
        }
        
internal protected static IDataReader GetReader(string commandText)
        {
            
return SqlHelper.ExecuteReader(ConnectionString, CommandType.StoredProcedure, commandText);
        }
        
internal protected static int NonQueryInt(string commandText, SqlParameter[] p)
        {
            
return SqlHelper.ExecuteNonQuery(ConnectionString, CommandType.StoredProcedure, commandText, p);
        }
        
internal protected static bool NonQueryBool(string commandText, SqlParameter[] p)
        {
            
return NonQueryInt(commandText, p) > 0;
        }
        
internal protected void RunSql(string commandText)
        {
            SqlHelper.ExecuteNonQuery(ConnectionString, CommandType.Text, commandText);
        }
        
public static void ExecuteSQL(string commandText)
        {
            SqlHelper.ExecuteNonQuery(ConnectionString, CommandType.Text, commandText);
        }

        
public static DataTable GetDataTable(string commandText)
        {
            
return SqlHelper.ExecuteDataTable(ConnectionString, CommandType.Text, commandText);
        }
        
public static DataTable GetDataTable(string commandText, CommandType commandType)
        {
            
return SqlHelper.ExecuteDataTable(ConnectionString, commandType, commandText);
        }
       
        
internal protected static string ReturnString(string commandText, SqlParameter[] p)
        {
            
object result = SqlHelper.ExecuteScalar(ConnectionString, System.Data.CommandType.StoredProcedure, commandText, p);
            
return result.ToString();
        }
        
internal protected static SqlParameter ReTurnStringValue
        {
            
get
            {
                
return SqlHelper.MakeOutParam("@ReTurnValue", SqlDbType.NVarChar, 200);
            }
        }
        
internal protected static SqlParameter ReTurnLongValue
        {
            
get
            {
                
return SqlHelper.MakeOutParam("@ReTurnValue", SqlDbType.BigInt, 8);
            }
        }
        
#endregion
    }
}
DynamicBuilder.cs:
代码

SqlHelper.cs:(我们将最常用的SQL在大家熟悉的SqlHelper中。)
代码

DAL:

SqlDataprovider.cs

using System;
using System.Data;
using System.Data.SqlClient;
using demo2010.database;
namespace demo2010.DAL
{
    
public class SqlDataProvider : DataBase
    {
        
internal static IDataReader DepartDemoSelectByPKID(int pKid)
        {
            SqlParameter[] p 
= { SqlHelper.MakeInParam("@pkid", SqlDbType.Int, 4, pKid) };
            
try { return GetReader("DepartDemoSelectByPKID", p); }
            
catch { return null; }
        }
    }
}

DepartDemo.cs

using System;
using demo2010.database;
using System.Data;

namespace demo2010.DAL
{

    
// File:    DepartDemo.cs
    
// Author:  Administrator
    
// Created: 2010年9月20日 16:34:05
    
// Purpose: Definition of Class DepartDemo

    
public class DepartDemo
    {
        
#region Primaey


        
private int pKID;
        
private string dName;
        
private string dCode;
        
private string manager;
        
private int parentID;
        
private string addUser;
        
private DateTime addTime;
        
private string modUser;
        
private DateTime modTime;
        
private short curState;
        
private string remark;
        
private int f1;
        
private string f2;

        
public int PKID
        {
            
get { return pKID; }
            
set { this.pKID = value; }
        }

        
public string DName
        {
            
get { return dName; }
            
set { this.dName = value; }
        }

        
public string DCode
        {
            
get { return dCode; }
            
set { this.dCode = value; }
        }

        
public string Manager
        {
            
get { return manager; }
            
set { this.manager = value; }
        }

        
public int ParentID
        {
            
get { return parentID; }
            
set { this.parentID = value; }
        }

        
public string AddUser
        {
            
get { return addUser; }
            
set { this.addUser = value; }
        }

        
public DateTime AddTime
        {
            
get { return addTime; }
            
set { this.addTime = value; }
        }

        
public string ModUser
        {
            
get { return modUser; }
            
set { this.modUser = value; }
        }

        
public DateTime ModTime
        {
            
get { return modTime; }
            
set { this.modTime = value; }
        }

        
public short CurState
        {
            
get { return curState; }
            
set { this.curState = value; }
        }

        
public string Remark
        {
            
get { return remark; }
            
set { this.remark = value; }
        }

        
public int F1
        {
            
get { return f1; }
            
set { this.f1 = value; }
        }

        
public string F2
        {
            
get { return f2; }
            
set { this.f2 = value; }
        }

        
#endregion

        
public static DepartDemo FindDepartDemoByPKID(int _pkid)
        {
            IDataReader reader 
= null;
            
try
            {
                reader 
= SqlDataProvider.DepartDemoSelectByPKID(_pkid);
                
if (reader.Read()) { return LoadSingleDepartDemo(reader); } return null;
            }
            
catch { return null; }
            
finally { if (reader != null) { reader.Close(); reader.Dispose(); } }

        }
        
public static DepartDemo LoadSingleDepartDemo(IDataReader reader)
        {
            DynamicBuilder
<DepartDemo> builder = DynamicBuilder<DepartDemo>.CreateBuilder(reader);
            
return builder.Build(reader);
        }
       
    }
}

测试代码 :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using demo2010.DAL;

namespace demo2010
{
    
class Program
    {
        
static void Main(string[] args)
        {
            GetDepartDemoByPKID(
101);
            Console.ReadKey();
        }
        
public static void GetDepartDemoByPKID(int pkid)
        {
            
try
            {
                DepartDemo d 
= DepartDemo.FindDepartDemoByPKID(pkid);
                
if (d != null)
                {
                    Console.WriteLine(
"部门:" + d.DName);
                    Console.WriteLine(
"领导:" + d.Manager);
                    Console.WriteLine(
"职能:" + d.Remark);
                }
            }
            
catch (Exception e1)
            {
                Console.WriteLine(
"出错:" + e1.Message);
            }
        }
    }
}

相应的配置文件App.Config内容,如果是web项目,则在web.config中。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    
<appSettings>
        
<add key="GlobalsConnString" value="server=ap3"DBServer;uid=sa;pwd=sa;database=Db2010Demo;Connect Timeout=15"/>
  
</appSettings>
</configuration>

运行结果:

邀月工作室

二、在Eclipse中新建一Java项目,如下:

邀月工作室

代码如下:

DBConnectionManager.java

代码

SQLHelper.java(Null提供的一个Java版的SQLHelper类。)

代码

DepartDemo.java

/**
 * 
 
*/
package demo2010.DAL;

/**
 * @Project:JavaDemoDB2010
 * @Package:demo2010.DAL.DepartDemo
 * @TypeName:DepartDemo
 * @FileName:DepartDemo.java
 * @Author Administrator:downmoon(3w@live.cn)
 * @CreateDate: 2010-9-20 上午10:25:56
 * @Version: 
 * @Comment: TODO

 
*/
/***********************************************************************
 * Module:  DepartDemo.java
 * Author:  Administrator
 * Purpose: Defines the Class DepartDemo
 **********************************************************************
*/

import java.sql.ResultSet;
import java.util.*;

import demo2010.database.SQLHelper;



/** @pdOid 57256f7a-9449-41c6-93a5-0eef465552d4 */
public class DepartDemo {
   
/** @pdOid 437bfdf8-3750-4db5-af5d-50747eb01559 */
   
private long PKID;
   
/** @pdOid 5ebafadf-55ac-4fb1-8641-439df447cc24 */
   
private java.lang.String DName;
   
/** @pdOid c896af73-a72a-4b8e-96ae-cb5ba5ad5792 */
   
private java.lang.String DCode;
   
/** @pdOid 53fe19a9-eb7b-4ac6-acaa-a508475f5692 */
   
private java.lang.String Manager;
   
/** @pdOid d950a7fc-2ea5-4653-aab3-fbdc616edbb2 */
   
private int ParentID = 0;
   
/** @pdOid b389d149-b255-47cb-928e-a0adcda19639 */
   
private java.lang.String AddUser;
   
/** @pdOid 824e133e-f450-4a32-a4be-326527337c66 */
   
private java.util.Date AddTime;
   
/** @pdOid 4845ee5e-93cf-4f1b-8478-f7ab983cd549 */
   
private java.lang.String ModUser;
   
/** @pdOid 0d89814b-5879-43a7-9c43-e88013ae96c8 */
   
private java.util.Date ModTime;
   
/** @pdOid cca1880e-0b09-47af-baf5-9fea47998e06 */
   
private short CurState = 0;
   
/** @pdOid cd288b50-8b3a-4ff4-96f8-34777c772558 */
   
private java.lang.String Remark;
   
/** @pdOid 8f8bc089-6df7-4f1b-b647-697b12de08cc */
   
private int F1 = 0;
   
/** @pdOid 43ebcbf9-c5ac-4346-9624-ab6a3c1afd9a */
   
private java.lang.String F2;
   
   
/** @pdOid cd03a547-3f8a-4e78-a006-dff1d4e1d359 */
   
public long getPKID() {
      
return PKID;
   }
   
   
/** @param newPKID
    * @pdOid 8f40d44d-04d2-4a10-a1ef-42b337257747 
*/
   
public void setPKID(long newPKID) {
      PKID 
= newPKID;
   }
   
   
/** @pdOid 94341fa0-b4e2-4a85-b155-70ce5f90ae5f */
   
public java.lang.String getDName() {
      
return DName;
   }
   
   
/** @param newDName
    * @pdOid 11f173c3-acbe-4846-a3a7-62b10f4f53b4 
*/
   
public void setDName(java.lang.String newDName) {
      DName 
= newDName;
   }
   
   
/** @pdOid 5f8e85b9-2219-4fee-ae6f-fc48e8fca92e */
   
public java.lang.String getDCode() {
      
return DCode;
   }
   
   
/** @param newDCode
    * @pdOid f419799f-b64c-44cb-832b-71658a3a6363 
*/
   
public void setDCode(java.lang.String newDCode) {
      DCode 
= newDCode;
   }
   
   
/** @pdOid b125d8b8-4861-40c0-9918-683aa3510e3d */
   
public java.lang.String getManager() {
      
return Manager;
   }
   
   
/** @param newManager
    * @pdOid 8066a269-a08c-451e-ab41-0e8adceca178 
*/
   
public void setManager(java.lang.String newManager) {
      Manager 
= newManager;
   }
   
   
/** @pdOid b6581403-2003-4059-b46a-b686e8fe87a7 */
   
public int getParentID() {
      
return ParentID;
   }
   
   
/** @param newParentID
    * @pdOid 21272935-8797-4d46-882f-415677f7545f 
*/
   
public void setParentID(int newParentID) {
      ParentID 
= newParentID;
   }
   
   
/** @pdOid 662710f6-bc84-4071-90da-b8f9bd639174 */
   
public java.lang.String getAddUser() {
      
return AddUser;
   }
   
   
/** @param newAddUser
    * @pdOid c0642e79-f4c3-4dd9-ac79-ba06db58794b 
*/
   
public void setAddUser(java.lang.String newAddUser) {
      AddUser 
= newAddUser;
   }
   
   
/** @pdOid ad230e1d-1caa-4568-8778-b3431bdbf542 */
   
public java.util.Date getAddTime() {
      
return AddTime;
   }
   
   
/** @param newAddTime
    * @pdOid 7394dcb9-efd2-412f-81da-d329a67cf247 
*/
   
public void setAddTime(java.util.Date newAddTime) {
      AddTime 
= newAddTime;
   }
   
   
/** @pdOid 5d16cd72-49f3-40b6-b271-fec20375deef */
   
public java.lang.String getModUser() {
      
return ModUser;
   }
   
   
/** @param newModUser
    * @pdOid 09ab4834-5cc0-40ef-8f84-ce6787d1f99b 
*/
   
public void setModUser(java.lang.String newModUser) {
      ModUser 
= newModUser;
   }
   
   
/** @pdOid 96f2da21-bc48-4e0e-a5a1-2db386424401 */
   
public java.util.Date getModTime() {
      
return ModTime;
   }
   
   
/** @param newModTime
    * @pdOid 93c8126d-0ce7-48f4-826a-6265da194c1b 
*/
   
public void setModTime(java.util.Date newModTime) {
      ModTime 
= newModTime;
   }
   
   
/** @pdOid a464afb2-fd2f-4d79-b35b-d8e0b6ef6ea5 */
   
public short getCurState() {
      
return CurState;
   }
   
   
/** @param newCurState
    * @pdOid 1e0fa26a-ba8f-416d-ae7a-e428479593c7 
*/
   
public void setCurState(short newCurState) {
      CurState 
= newCurState;
   }
   
   
/** @pdOid 362cbcd2-f2b7-4764-b29c-3895fe980e32 */
   
public java.lang.String getRemark() {
      
return Remark;
   }
   
   
/** @param newRemark
    * @pdOid f77ee744-cd9b-4b54-8b2a-3b7d41f1727e 
*/
   
public void setRemark(java.lang.String newRemark) {
      Remark 
= newRemark;
   }
   
   
/** @pdOid 16f132e7-ae70-4e97-a46e-26325c88980b */
   
public int getF1() {
      
return F1;
   }
   
   
/** @param newF1
    * @pdOid 8ebb8cc2-f113-4486-93f9-629d374aa639 
*/
   
public void setF1(int newF1) {
      F1 
= newF1;
   }
   
   
/** @pdOid ad061b23-d17b-408e-a3fa-d6817deaf3ff */
   
public java.lang.String getF2() {
      
return F2;
   }
   
   
/** @param newF2
    * @pdOid 746c8dd2-288b-4478-bfac-83af9ba736be 
*/
   
public void setF2(java.lang.String newF2) {
      F2 
= newF2;
   }
   
    
/*
     * Find User by UserName
     
*/
    
public static DepartDemo FindByPKID(int _pkid) 
    {
        
        DepartDemo depart 
= new DepartDemo();
        
try {
                    
            ResultSet rs 
= SQLHelper.getResultSet("SELECT * FROM DepartDemo WHERE PKID = ?",_pkid);
            
if (rs.next()) 
            {
                depart.setPKID(rs.getInt(
"PKID"));
                depart.setDName(rs.getString(
"DName"));
                depart.setManager(rs.getString(
"Manager"));
                depart.setDCode(rs.getString(
"DCode"));
                depart.setParentID(rs.getInt(
"ParentID"));
                depart.setAddUser(rs.getString(
"AddUser"));
                depart.setModUser(rs.getString(
"ModUser"));
                
//depart.setAddTime(DataConvert.StrTosqlDate(rs.getString("AddTime")));
                depart.setAddTime(rs.getDate("AddTime"));
                depart.setModTime(rs.getDate(
"ModTime"));
                depart.setF1(rs.getInt(
"F1"));
                depart.setF2(rs.getString(
"F2"));
                depart.setRemark(rs.getString(
"Remark"));
            }
            
else 
            {
                depart 
= null;
            }
        } 
        
catch (Exception e) 
        {
            System.err.println(e);
        }
        
        
return depart;

    }

}

测试代码

package demo2010.test;

import demo2010.DAL.DepartDemo;

public class TestDbMain {

    
/**
     * 
@param args
     
*/
    
public static void main(String[] args) {
        GetDepartDemoByPKID(
101);
    }

    
public static void GetDepartDemoByPKID(int pkid) {
        
try {
            DepartDemo d 
= DepartDemo.FindByPKID(pkid);
            
if (d != null) {
                System.out.println(
"部门:"+d.getDName());
                System.out.println(
"领导:"+d.getManager());
                System.out.println(
"职能:"+d.getRemark());
            }
        } 
catch (Exception e1) {
            System.out.println(
"出错:" + e1);
        }
    }
}

配置文件demo2010.txt内容(位于src根路径下)

driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
sqlserver.url=jdbc:sqlserver://ap3""DBServer:1433;DatabaseName=Db2010Demo
sqlserver.user=sa
sqlserver.password=sa
sqlserver.maxconn=2000

测试结果:

邀月工作室

 为了更加清楚地说明数据连接的有关特性,我们用一种更原始的数据读取方式:

 邀月工作室

DBConnect.java的代码如下:


/**
 * 
 
*/
package demo2010.database;

/**
 * @Project:JavaDemoDB2010
 * @Package:demo2010.database.DBConnect
 * @TypeName:DBConnect
 * @FileName:DBConnect.java
 * @Author Administrator:downmoon(3w@live.cn)
 * @CreateDate: 2010-9-20 上午09:12:21
 * @Version: 
 * @Comment: TODO

 
*/
import java.sql.*;
import demo2010.database.DBConnectionManager;

public class DBConnect {
    
private Connection conn = null;

    
private Statement stmt = null;

    
private PreparedStatement prepstmt = null;

    
private DBConnectionManager dcm = null;

    
void init() {
        dcm 
= DBConnectionManager.getInstance();
        conn 
= dcm.getConnection("sqlserver");
    }

    
/**
     * 构造数据库的连接和访问类
     
*/
    
public DBConnect() throws Exception {
        init();
        stmt 
= conn.createStatement();
    }

    
public DBConnect(int resultSetType, int resultSetConcurrency)
            
throws Exception {
        init();
        stmt 
= conn.createStatement(resultSetType, resultSetConcurrency);
    }

    
/**
     * 构造数据库的连接和访问类 预编译SQL语句
     * 
     * 
@param sql
     *            SQL语句
     
*/
    
public DBConnect(String sql) throws Exception {
        init();
        
this.prepareStatement(sql);
    }

    
public DBConnect(String sql, int resultSetType, int resultSetConcurrency)
            
throws Exception {
        init();
        
this.prepareStatement(sql, resultSetType, resultSetConcurrency);
    }

    
/**
     * 返回连接
     * 
     * 
@return Connection 连接
     
*/
    
public Connection getConnection() {
        
return conn;
    }

    
/**
     * PreparedStatement
     * 
     * 
@param sql
     *            预设SQL语句
     
*/
    
public void prepareStatement(String sql) throws SQLException {
        prepstmt 
= conn.prepareStatement(sql);
    }

    
public void prepareStatement(String sql, int resultSetType,
            
int resultSetConcurrency) throws SQLException {
        prepstmt 
= conn.prepareStatement(sql, resultSetType,
                resultSetConcurrency);
    }

    
/**
     * 设置对应值
     * 
     * 
@param index
     *            参数索引
     * 
@param value
     *            对应值
     
*/
    
public void setString(int index, String value) throws SQLException {
        prepstmt.setString(index, value);
    }

    
public void setInt(int index, int value) throws SQLException {
        prepstmt.setInt(index, value);
    }

    
public void setBoolean(int index, boolean value) throws SQLException {
        prepstmt.setBoolean(index, value);
    }

    
public void setDate(int index, Date value) throws SQLException {
        prepstmt.setDate(index, value);
    }

    
public void setTimestamp(int index, Timestamp value) throws SQLException {
        prepstmt.setTimestamp(index, value);
    }

    
public void setLong(int index, long value) throws SQLException {
        prepstmt.setLong(index, value);
    }

    
public void setFloat(int index, float value) throws SQLException {
        prepstmt.setFloat(index, value);
    }

    
public void setBytes(int index, byte[] value) throws SQLException {
        prepstmt.setBytes(index, value);
    }

    
public void clearParameters() throws SQLException {
        prepstmt.clearParameters();
        prepstmt 
= null;
    }

    
/**
     * 返回预设状态
     
*/
    
public PreparedStatement getPreparedStatement() {
        
return prepstmt;
    }

    
/**
     * 返回状态
     * 
     * 
@return Statement 状态
     
*/
    
public Statement getStatement() {
        
return stmt;
    }

    
/**
     * 执行SQL语句返回字段集
     * 
     * 
@param sql
     *            SQL语句
     * 
@return ResultSet 字段集
     
*/
    
public ResultSet executeQuery(String sql) throws SQLException {
        
if (stmt != null) {
            
return stmt.executeQuery(sql);
        } 
else
            
return null;
    }

    
public ResultSet executeQuery() throws SQLException {
        
if (prepstmt != null) {
            
return prepstmt.executeQuery();
        } 
else
            
return null;
    }

    
/**
     * 执行SQL语句
     * 
     * 
@param sql
     *            SQL语句
     
*/
    
public void executeUpdate(String sql) throws SQLException {
        
if (stmt != null)
            stmt.executeUpdate(sql);
    }

    
public void executeUpdate() throws SQLException {
        
if (prepstmt != null)
            prepstmt.executeUpdate();
    }

    
/**
     * 关闭连接
     
*/
    
public void close() throws Exception {
        
if (stmt != null) {
            stmt.close();
            stmt 
= null;
        }
        
if (prepstmt != null) {
            prepstmt.close();
            prepstmt 
= null;
        }
        
if (conn != null) {

            dcm.freeConnection(
"sqlserver", conn);

        }

    }
}

相应的DepartDemo.java中部分代码如下:
public static DepartDemo FindByPKID(int _pkid) 
    {
        DBConnect dbc 
= null;
        DepartDemo depart 
= new DepartDemo();
        
try {
            dbc 
= new DBConnect();
            dbc.prepareStatement(
"SELECT * FROM DepartDemo WHERE PKID = ?");
            dbc.setInt(
1, _pkid);
            ResultSet rs 
= dbc.executeQuery();
            
if (rs.next()) 
            {
                depart.setPKID(rs.getInt(
"PKID"));
                depart.setDName(rs.getString(
"DName"));
                depart.setManager(rs.getString(
"Manager"));
                depart.setDCode(rs.getString(
"DCode"));
                depart.setParentID(rs.getInt(
"ParentID"));
                depart.setAddUser(rs.getString(
"AddUser"));
                depart.setModUser(rs.getString(
"ModUser"));
                
//depart.setAddTime(DataConvert.StrTosqlDate(rs.getString("AddTime")));
                depart.setAddTime(rs.getDate("AddTime"));
                depart.setModTime(rs.getDate(
"ModTime"));
                depart.setF1(rs.getInt(
"F1"));
                depart.setF2(rs.getString(
"F2"));
                depart.setRemark(rs.getString(
"Remark"));
            }
            
else 
            {
                depart 
= null;
            }
        } 
        
catch (Exception e) 
        {
            System.err.println(e);
        }
        
finally 
        {
            
try 
            {
                dbc.close();
            }
            
catch (Exception e) 
            {
                e.printStackTrace();
                depart 
= null;
            }
        }
        
return depart;

    }

运行结果同上

小结:
1、在C#非web项目中,应用程序默认的配置文件App.config位于项目根目录下,运行时自动复制到应用程序exe文件所在的路径下,如bin"debug下等。web项目中,web.config位于网站根目录下。
Java中读取属性文件位于src目录下,运行时会自动复制到bin目录下。
两者的默认路径都可以配置。对于不同的框架如Spring等都有相应的配置文件读取方式,本文中并未涉及。
2、数据访问均采取相应的连接串形式。对连接池的控制机制也略有不同。




邀月注:本文版权由邀月和博客园(BlogJava)共同所有,转载请注明出处。
助人等于自助!   3w@live.cn

只有注册用户登录后才能发表评论。


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问