搜尋
首頁資料庫mysql教程淘宝商城model部分_MySQL

淘宝商城

model

/** * 功能:这是一个数据库连接,一个model类 */package com.xf.model;import java.sql.*;public class ConnDB{	private Connection ct=null;		public Connection getConn()	{		try		{			Class.forName("com.mysql.jdbc.Driver");			ct=DriverManager.getConnection("jdbc:mysql://localhost:3306/db3","root","");		} 		catch (Exception e)		{			// TODO: handle exception			e.printStackTrace();		}				return ct;	}}
/** * 功能:这是一个model类对应goods表 */package com.xf.model;public class GoodsBean{	private long goodsId;		//货物ID	private String goodsName;	//货物名称	private String goodsIntro;	//介绍	private float goodsPrice;	//价格	private int goodsNum;		//数量	private String publisher;	//发行商	private String photo="11.jpg";		//照片	private String type;		//类型			public long getGoodsId()	{		return goodsId;	}	public void setGoodsId(long goodsId)	{		this.goodsId = goodsId;	}	public String getGoodsName()	{		return goodsName;	}	public void setGoodsName(String goodsName)	{		this.goodsName = goodsName;	}	public String getGoodsIntro()	{		return goodsIntro;	}	public void setGoodsIntro(String goodsIntro)	{		this.goodsIntro = goodsIntro;	}	public float getGoodsPrice()	{		return goodsPrice;	}	public void setGoodsPrice(float goodsPrice)	{		this.goodsPrice = goodsPrice;	}	public int getGoodsNum()	{		return goodsNum;	}	public void setGoodsNum(int goodsNum)	{		this.goodsNum = goodsNum;	}	public String getPublisher()	{		return publisher;	}	public void setPublisher(String publisher)	{		this.publisher = publisher;	}	public String getPhoto()	{		return photo;	}	public void setPhoto(String photo)	{		this.photo = photo;	}	public String getType()	{		return type;	}	public void setType(String type)	{		this.type = type;	}	}
/** * 功能:也是一个model,业务逻辑,处理和goods表相关的业务逻辑 */package com.xf.model;import java.sql.*;import java.util.ArrayList;public class GoodsBeanBO{	//定义一些要用到的变量	private ResultSet rs=null;	private Connection ct=null;	private PreparedStatement ps;			public int getPageCount(int pageSize)	{		int pageCount=0;	//总页数		int rowCount=0;	//一共有多少条记录		try		{			//链接数据库			ct=new ConnDB().getConn();			//查询语句			String mysql="select count(*) from `goods`";			ps=ct.prepareStatement(mysql);			//全部记录放入			rs=ps.executeQuery();						if(rs.next())	//如果查找到了数据			{				rowCount=rs.getInt(1);	//得到个数								if(rowCount%pageSize != 0)				{					pageCount=rowCount/pageSize+1;	//得到结果四舍五入然后加一				}				else				{					pageCount=rowCount/pageSize;	//恰好整除,那么就直接得到结果				}			}		} 		catch (Exception e)		{			// TODO: handle exception			e.printStackTrace();		}		finally		{			this.close();		}				return pageCount;	}		/**	 * 功能:得到分页数据,分页显示数据	 * @param pageSize 这个是每页面显示地个数	 * @author cutter_point	 * @param	pageNow	当前要显示地页面	 */	public ArrayList getGoodsByPage(int pageSize, int pageNow)	{		ArrayList a1=new ArrayList();	//这是要返回的数据				try		{			//得到链接			ct=new ConnDB().getConn();			//导入mysql语句			String mysql="select * from `goods` limit ?,?";			ps=ct.prepareStatement(mysql);			//吧?设置成想要变成的值			ps.setInt(1, pageSize*(pageNow-1));			ps.setInt(2, pageSize);			//执行查询,结果放入ResultSet中			rs=ps.executeQuery();						while(rs.next())	//只要取出一行数据,循环下去			{				GoodsBean gb=new GoodsBean();				//吧查找到的数据放入到gb中				gb.setGoodsId(rs.getInt(1));				gb.setGoodsName(rs.getString(2));				gb.setGoodsIntro(rs.getString(3));				gb.setGoodsPrice(rs.getFloat(4));				gb.setGoodsNum(rs.getInt(5));				gb.setPublisher(rs.getString(6));				gb.setPhoto(rs.getString(7));				gb.setType(rs.getString(8));								//吧goodsBean的数据放入到ArrayList里面去				a1.add(gb);							}		} 		catch (Exception e)		{			// TODO: handle exception			e.printStackTrace();		}		finally		{			this.close();		}				return a1;	//吧ArrayList返回上去			}		//根据货物id,得到货物具体信息的函数	public GoodsBean getGoodsBean(String id)	{		GoodsBean gb=new GoodsBean();		try		{			//建立连接			ct=new ConnDB().getConn();			//存放连接数据库的脚本语句			String mysql="select * from `goods` where `goodsId`=?";			ps=ct.prepareStatement(mysql);			//吧id传给第一个?			ps.setString(1, id);			//吧查询到的数据给rs			rs=ps.executeQuery();						if(rs.next())	//只要查找到了数据			{				//吧查找到的数据放入到gb中				gb.setGoodsId(rs.getInt(1));				gb.setGoodsName(rs.getString(2));				gb.setGoodsIntro(rs.getString(3));				gb.setGoodsPrice(rs.getFloat(4));				gb.setGoodsNum(rs.getInt(5));				gb.setPublisher(rs.getString(6));				gb.setPhoto(rs.getString(7));				gb.setType(rs.getString(8));			}					} 		catch (Exception e)		{			// TODO: handle exception			e.printStackTrace();		}		finally		{			//关闭资源			this.close();		}				return gb;	}		//关闭资源	public void close()	{		try		{			if(!rs.isClosed())			{				rs.close();				rs=null;			}			if(!ps.isClosed())			{				ps.close();				ps=null;			}			if(!ct.isClosed())			{				ct.close();				ct=null;			}		} 		catch (Exception e)		{			// TODO: handle exception			e.printStackTrace();		}	}		}
/** * 功能:这是一个BO(model),用来处理与购物相关的业务逻辑 * 时间:2014年7月9日14:29:30 * 作者:cutter_point */package com.xf.model;import java.sql.*;import java.util.*;public class MyCartBO{	//定义一个hashmap集合,用于存放书的ID和数量	HashMap<string string> hm=new HashMap<string string>();	//链接数据库的一些变量	private ResultSet rs=null;	private Connection ct=null;	private PreparedStatement ps=null;		private float allPrice=0.0f;	//得到这个商品的购买数量	public String getGoodsNumById(String goodsId)	{				return hm.get(goodsId);	}	//得到总价	public float getAllPrice()	{				return this.allPrice;	}	//1、添加货物	public void addGoods(String goodsId, String goodsNum)	{		hm.put(goodsId, goodsNum);	}		//2、删除货物	public void delGoods(String goodsId)	{		hm.remove(goodsId);	}		//3、清空货物	public void clear()	{		hm.clear();	}		//4、修改货物数量	public void upGoods(String goodsId, String newNum)	{		hm.put(goodsId, newNum);	}		//5、显示购物车	public ArrayList<goodsbean> showMyCart()	{		ArrayList<goodsbean> a1=new ArrayList<goodsbean>();				try		{			String mysql="select * from `goods` where `goodsId` in ";//(1,4)						//使用迭代器重hm中取出id			Iterator<string> it=hm.keySet().iterator();						String sub="(";						while(it.hasNext())	//迭代取出数据			{				//取出goodsId				String goodsId=(String)it.next();				//判断是不是最后一个id				if(it.hasNext())				{					sub+=goodsId+", ";				}				else				{					sub+=goodsId+")";				}			}						mysql+=sub;			//链接数据库进行mysql语句使用			ct=new ConnDB().getConn();			//然后声明要使用MySQL语句了			ps=ct.prepareStatement(mysql);			//得到语句执行结果			rs=ps.executeQuery();						//总价清空			this.allPrice=0.0f;						while(rs.next())			{				GoodsBean gb=new GoodsBean();				//吧查找到的数据放入到gb中				int goodsId=rs.getInt(1);				gb.setGoodsId(goodsId);				gb.setGoodsName(rs.getString(2));				gb.setGoodsIntro(rs.getString(3));				float unit=rs.getFloat(4);				gb.setGoodsPrice(unit);				gb.setGoodsNum(rs.getInt(5));				gb.setPublisher(rs.getString(6));				gb.setPhoto(rs.getString(7));				gb.setType(rs.getString(8));								this.allPrice+=unit*Integer.parseInt(this.getGoodsNumById(goodsId+""));								//吧goodsBean的数据放入到ArrayList里面去				a1.add(gb);			}					} 		catch (Exception e)		{			// TODO: handle exception			e.printStackTrace();		}		finally		{			this.close();		}				return a1;	}		//关闭资源	public void close()	{		try		{			if(!rs.isClosed())			{				rs.close();				rs=null;			}			if(!ps.isClosed())			{				ps.close();				ps=null;			}			if(!ct.isClosed())			{				ct.close();				ct=null;			}		} 		catch (Exception e)		{			// TODO: handle exception			e.printStackTrace();		}	}}</string></goodsbean></goodsbean></goodsbean></string></string>
/** * 这是一个model和order表对应 */package com.xf.model;import java.util.Date;public class OrderBean{	private long ordersId;		// '订单号' ,	private long userId;		// '那个用户订的' ,	private Date orderDate;		// '订单下的时期' ,	private String payMode;		// '付款方式' ,	private byte	isPayed;	//'0表示没有付款,1表示已经付款' ,	private float	totalPrice; //'总价格' ,	public long getOrdersId()	{		return ordersId;	}	public void setOrdersId(long ordersId)	{		this.ordersId = ordersId;	}	public long getUserId()	{		return userId;	}	public void setUserId(long userId)	{		this.userId = userId;	}	public Date getOrderDate()	{		return orderDate;	}	public void setOrderDate(Date orderDate)	{		this.orderDate = orderDate;	}	public String getPayMode()	{		return payMode;	}	public void setPayMode(String payMode)	{		this.payMode = payMode;	}	public byte getIsPayed()	{		return isPayed;	}	public void setIsPayed(byte isPayed)	{		this.isPayed = isPayed;	}	public float getTotalPrice()	{		return totalPrice;	}	public void setTotalPrice(float totalPrice)	{		this.totalPrice = totalPrice;	}		}
//这是一个model,对order,orderDetail的处理package com.xf.model;import java.sql.*;import java.util.*;public class OrderBeanBO{	//定义数据库相关变量	private	ResultSet			rs=null;	private Connection			ct=null;	private PreparedStatement	ps=null;			/**	 * 生成订单	 * @param mbo 用户的购物车	 * @param userId	用户ID	 * @return	返回一个订单详细信息bean【OderInfoBean】	 */	public OrderInfoBean addOrder(MyCartBO mcbo, String userId)	{		OrderInfoBean	oifb=new	OrderInfoBean();		boolean b=true;		try		{			//得到链接			ct=new ConnDB().getConn();			//带入MySQL代码			String mysql="insert	into	`orders`	(`userId`,	`isPayed`,	`totalPrice`) values(?,?,?)";			ps=ct.prepareStatement(mysql);			ps.setString(1, userId);			ps.setByte(2, (byte)0);			ps.setFloat(3, mcbo.getAllPrice());			//执行			int a=ps.executeUpdate();						if(a == 1)			{				//还得取出刚刚添加到orders表的订单号				//取出最后那条就是了				ps=ct.prepareStatement("select	max(`ordersId`) from	`orders`");				rs=ps.executeQuery();								int orderId=0;				if(rs.next())				{					orderId=rs.getInt(1);				}								//orders表天机成功				//添加ordersDetail表								//从购物车中取出所有选购的货物				ArrayList<goodsbean> a1=mcbo.showMyCart();								//循环添加到orderDetail中				//使用批量执行操作数据库				Statement sm=ct.createStatement();				for(int i=0 ; i != a1.size() ; ++i)				{					GoodsBean gb=(GoodsBean)a1.get(i);					String mysql2="insert	into	`orderDetail`	 values("+orderId+",	"+gb.getGoodsId()+",	"+mcbo.getGoodsNumById(gb.getGoodsId()+"")+")";					sm.addBatch(mysql2);				}								//批量执行				sm.executeBatch();								//顺带把要显示的订单细节				String mysql3="select	`ordersId`,	`truename`,	`address`,	`postcode`,	`phone`,	`totalPrice`,	`username`,	`email` from " +						"	`users`,	`orders` where	`ordersId`=?	and	`users`.userid= (		select	`orders`.userId		from " +						"	`orders`		where	`ordersId`=?	)";													//执行语句				ps=ct.prepareStatement(mysql3);				ps.setInt(1, orderId);				ps.setInt(2, orderId);								rs=ps.executeQuery();								if(rs.next())				{					//将rs封装到OrderInfoBean					oifb.setOrdersId(rs.getInt(1));					oifb.setTruename(rs.getString(2));					oifb.setAddress(rs.getString(3));					oifb.setPostcode(rs.getString(4));					oifb.setPhone(rs.getString(5));					oifb.setTotalPrice(rs.getFloat(6));					oifb.setUsername(rs.getString(7));					oifb.setEmail(rs.getString(8));				}							}		} 		catch (Exception e)		{			// TODO: handle exception			b=false;			e.printStackTrace();		}		finally		{			this.close();		}				if(b)		{			return oifb;		}		else		{			return null;		}	}		//关闭资源	public void close()	{		try		{			if(!rs.isClosed())			{				rs.close();				rs=null;			}			if(!ps.isClosed())			{				ps.close();				ps=null;			}			if(!ct.isClosed())			{				ct.close();				ct=null;			}		} 		catch (Exception e)		{			// TODO: handle exception			e.printStackTrace();		}	}	}</goodsbean>
package com.xf.model;public class OrderDetailBean{	private	long	orderIid;	private	long	goodsId;	private int		nums;	public long getOrderIid()	{		return orderIid;	}	public void setOrderIid(long orderIid)	{		this.orderIid = orderIid;	}	public long getGoodsId()	{		return goodsId;	}	public void setGoodsId(long goodsId)	{		this.goodsId = goodsId;	}	public int getNums()	{		return nums;	}	public void setNums(int nums)	{		this.nums = nums;	}	}
/** * 信息最全的bean */package com.xf.model;import java.util.Date;public class OrderInfoBean{	private long userid;		// '用户id',	private String username;	// '用户名',	private String truename;	// '真实姓名',	private String passwd;	// '密码',	private String email;		// '电子邮件',	private String phone;		// '电话号码',	private String address;	// '用户地址',	private String postcode;	// '编邮',	private int 	 grade=1;		// '户用级别',	private long ordersId;		// '订单号' ,	private long userId;		// '那个用户订的' ,	private Date orderDate;		// '订单下的时期' ,	private String payMode;		// '付款方式' ,	private byte	isPayed;	//'0表示没有付款,1表示已经付款' ,	private float	totalPrice; //'总价格' ,	public long getUserid()	{		return userid;	}	public void setUserid(long userid)	{		this.userid = userid;	}	public String getUsername()	{		return username;	}	public void setUsername(String username)	{		this.username = username;	}	public String getTruename()	{		return truename;	}	public void setTruename(String truename)	{		this.truename = truename;	}	public String getPasswd()	{		return passwd;	}	public void setPasswd(String passwd)	{		this.passwd = passwd;	}	public String getEmail()	{		return email;	}	public void setEmail(String email)	{		this.email = email;	}	public String getPhone()	{		return phone;	}	public void setPhone(String phone)	{		this.phone = phone;	}	public String getAddress()	{		return address;	}	public void setAddress(String address)	{		this.address = address;	}	public String getPostcode()	{		return postcode;	}	public void setPostcode(String postcode)	{		this.postcode = postcode;	}	public int getGrade()	{		return grade;	}	public void setGrade(int grade)	{		this.grade = grade;	}	public long getOrdersId()	{		return ordersId;	}	public void setOrdersId(long ordersId)	{		this.ordersId = ordersId;	}	public long getUserId()	{		return userId;	}	public void setUserId(long userId)	{		this.userId = userId;	}	public Date getOrderDate()	{		return orderDate;	}	public void setOrderDate(Date orderDate)	{		this.orderDate = orderDate;	}	public String getPayMode()	{		return payMode;	}	public void setPayMode(String payMode)	{		this.payMode = payMode;	}	public byte getIsPayed()	{		return isPayed;	}	public void setIsPayed(byte isPayed)	{		this.isPayed = isPayed;	}	public float getTotalPrice()	{		return totalPrice;	}	public void setTotalPrice(float totalPrice)	{		this.totalPrice = totalPrice;	}		}
package com.xf.model;public class UsersBean{	private long userid;		// '用户id',	private String username;	// '用户名',	private String truename;	// '真实姓名',	private String passwd;	// '密码',	private String email;		// '电子邮件',	private String phone;		// '电话号码',	private String address;	// '用户地址',	private String postcode;	// '编邮',	private int 	 grade=1;		// '户用级别',		public long getUserid()	{		return userid;	}	public void setUserid(long userid)	{		this.userid = userid;	}	public String getUsername()	{		return username;	}	public void setUsername(String username)	{		this.username = username;	}	public String getTruename()	{		return truename;	}	public void setTruename(String truename)	{		this.truename = truename;	}	public String getPasswd()	{		return passwd;	}	public void setPasswd(String passwd)	{		this.passwd = passwd;	}	public String getEmail()	{		return email;	}	public void setEmail(String email)	{		this.email = email;	}	public String getPhone()	{		return phone;	}	public void setPhone(String phone)	{		this.phone = phone;	}	public String getAddress()	{		return address;	}	public void setAddress(String address)	{		this.address = address;	}	public String getPostcode()	{		return postcode;	}	public void setPostcode(String postcode)	{		this.postcode = postcode;	}	public int getGrade()	{		return grade;	}	public void setGrade(int grade)	{		this.grade = grade;	}}
/** * 功能:处理有关users表的逻辑业务 * 时间:2014年7月10日15:22:10 * 作者:cutter_point */package com.xf.model;import java.sql.*;import com.xf.model.*;public class UsersBeanBo{	//连接数据库的一些变量	private Connection ct=null;	private ResultSet rs=null;	private PreparedStatement ps=null;		/**	 * 更具用户名返回用户的全部信息	 * @param u	 * @return UsersBean	 */	public UsersBean getUserBean(String u)	{		UsersBean ub=new UsersBean();		try		{			//连接			ct=new ConnDB().getConn();			//导入MySQL语句			String mysql="select * from `users` where username=? limit 0,1";			ps=ct.prepareStatement(mysql);			ps.setString(1, u);			//执行语句			rs=ps.executeQuery();						if(rs.next())			{				ub.setUserid(rs.getLong(1));				ub.setUsername(rs.getString(2));				ub.setTruename(rs.getString(3));				ub.setPasswd(rs.getString(4));				ub.setEmail(rs.getString(5));				ub.setPhone(rs.getString(6));				ub.setAddress(rs.getString(7));				ub.setPostcode(rs.getString(8));				ub.setGrade(rs.getInt(9));							}					} 		catch (Exception e)		{			// TODO: handle exception			e.printStackTrace();		}		finally		{			this.close();		}				return ub;	}		/**	 * @author xiaofeng	 * @param u 账号	 * @param p 密码	 */	public boolean checkUser(String u, String p)	{		boolean b=false;		try		{			//连接数据库			String mysql="select `passwd` from `users` where `username`=?";			//建立连接			ct=new ConnDB().getConn();			//导入语句			ps=ct.prepareStatement(mysql);			ps.setString(1, u);			//执行语句			rs=ps.executeQuery();						if(rs.next())			{				//取出数据库密码和p比较				String dbPasswd=rs.getString(1);								if(dbPasswd.equals(p))				{					b=true;				}			}								} 		catch (Exception e)		{			// TODO: handle exception			e.printStackTrace();		}		finally		{			this.close();		}				return b;	}		/**	 * @author xiaofeng	 * @param 关闭资源	 */	public void close()	{		try		{			if(!rs.isClosed())			{				rs.close();				rs=null;			}			if(!ps.isClosed())			{				ps.close();				ps=null;			}			if(!ct.isClosed())			{				ct.close();				ct=null;			}		} 		catch (Exception e)		{			// TODO: handle exception			e.printStackTrace();		}	}			}
陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
減少在Docker中使用MySQL內存的使用減少在Docker中使用MySQL內存的使用Mar 04, 2025 pm 03:52 PM

本文探討了Docker中的優化MySQL內存使用量。 它討論了監視技術(Docker統計,性能架構,外部工具)和配置策略。 其中包括Docker內存限制,交換和cgroups

mysql無法打開共享庫怎麼解決mysql無法打開共享庫怎麼解決Mar 04, 2025 pm 04:01 PM

本文介紹了MySQL的“無法打開共享庫”錯誤。 該問題源於MySQL無法找到必要的共享庫(.SO/.DLL文件)。解決方案涉及通過系統軟件包M驗證庫安裝

如何使用Alter Table語句在MySQL中更改表?如何使用Alter Table語句在MySQL中更改表?Mar 19, 2025 pm 03:51 PM

本文討論了使用MySQL的Alter Table語句修改表,包括添加/刪除列,重命名表/列以及更改列數據類型。

在 Linux 中運行 MySQl(有/沒有帶有 phpmyadmin 的 podman 容器)在 Linux 中運行 MySQl(有/沒有帶有 phpmyadmin 的 podman 容器)Mar 04, 2025 pm 03:54 PM

本文比較使用/不使用PhpMyAdmin的Podman容器直接在Linux上安裝MySQL。 它詳細介紹了每種方法的安裝步驟,強調了Podman在孤立,可移植性和可重複性方面的優勢,還

什麼是 SQLite?全面概述什麼是 SQLite?全面概述Mar 04, 2025 pm 03:55 PM

本文提供了SQLite的全面概述,SQLite是一個獨立的,無服務器的關係數據庫。 它詳細介紹了SQLite的優勢(簡單,可移植性,易用性)和缺點(並發限制,可伸縮性挑戰)。 c

在MacOS上運行多個MySQL版本:逐步指南在MacOS上運行多個MySQL版本:逐步指南Mar 04, 2025 pm 03:49 PM

本指南展示了使用自製在MacOS上安裝和管理多個MySQL版本。 它強調使用自製裝置隔離安裝,以防止衝突。 本文詳細詳細介紹了安裝,起始/停止服務和最佳PRA

如何為MySQL連接配置SSL/TLS加密?如何為MySQL連接配置SSL/TLS加密?Mar 18, 2025 pm 12:01 PM

文章討論了為MySQL配置SSL/TLS加密,包括證書生成和驗證。主要問題是使用自簽名證書的安全含義。[角色計數:159]

哪些流行的MySQL GUI工具(例如MySQL Workbench,PhpMyAdmin)是什麼?哪些流行的MySQL GUI工具(例如MySQL Workbench,PhpMyAdmin)是什麼?Mar 21, 2025 pm 06:28 PM

文章討論了流行的MySQL GUI工具,例如MySQL Workbench和PhpMyAdmin,比較了它們對初學者和高級用戶的功能和適合性。[159個字符]

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前By尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境