邀月

從.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)共同所有,轉載請注明出處。
助人等于自助!   [email protected]

只有注冊用戶登錄后才能發表評論。


網站導航:
 
魔法糖果闯关