如何进行数据库增删改查查

tp5中如何在模型类实现增删改查 - ThinkPHP框架
如图,在tp3中,我习惯将增删改查封装到模型类,然后在控制器调用
可是到了tp5中,用同样的方法,返回的数据有点问题呀,如图
红框里,我使用\Db(),返回的数据就是纯数组,可是用$this,为什么就返回一些额外数据呢?如图
ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。83907人阅读
一、增:有2种方法
1.使用insert插入单行数据:
&&&&&&& &语法:insert [into] &表名& [列名] values &列值&
   例:insert into Strdents (姓名,性别,出生日期) values ('王伟华','男','')
  &注意:如果省略表名,将依次插入所有列
2.使用insert,select语句将现有表中的 数据添加到已有的新表中
&&&&&& &语法:insert into &已有的新表& &列名& select &原表列名& from &原表名&
  例:insert into addressList ('姓名','地址','电子邮件')select name,address,email&&&&&&&&&&
&&&&&&&&&&&&&&& from&&Strdents&
&&&&& 注意:查询得到的数据个数、顺序、数据类型等,必须与插入的项保持一致
二、删:有2中方法
1.使用delete删除数据某些数据
&&& 语法:delete from &表名& [where &删除条件&]  &&
&&& 例:delete from a where name='王伟华'(删除表a中列值为王伟华的行) &
&&&&&&& 注意:删除整行不是删除单个字段,所以在delete后面不能出现字段名
2.使用truncate table 删除整个表的数据
&&&&&&& 语法:truncate table &表名&
 & &例:truncate table addressList
 & 注意:删除表的所有行,但表的结构、列、约束、索引等不会被删除;不能
&&&&&&&& 用于有外建约束引用的表
三、改  使用update更新修改数据&&&&&&&&&
&&& 语法:update &表名& set &列名=更新值& [where &更新条件&]
  &例:update addressList set 年龄=18 where 姓名='王伟华'
  &注意:set后面可以紧随多个数据列的更新值(非数字要引号);where子句是可选的(非数字要引号),用来限制条件,如果不选则整个表的所有行都被更新
1.普通查询
&&& 语法:select &列名& from &表名& [where &查询条件表达试&] [order by &排序的列&&
&&& &&&&& 名&[asc或desc]]
   1).查询所有数据行和列
    例:select * from a
    说明:查询a表中所有行和
   2).查询部分行列--条件查询
    例:select i,j,k&& from& a&& where f=5
    说明:查询表a中f=5的所有行,并显示i,j,k3列
   3).在查询中使用AS更改列名
    例:select name as 姓名 from a where& gender='男'
    说明:查询a表中性别为男的所有行,显示name列,并将name列改名为(姓名)显示
   4).查询空行
    例:select name from a where email is null
    说明:查询表a中email为空的所有行,并显示name列;SQL语句中用is null或者is not null
&&&&&&&&&&&&&&&&& 来判断是否为空行
   5).在查询中使用常量
    例:select name '北京' as 地址 from a
    说明:查询表a,显示name列,并添加地址列,其列值都为'北京'
   6).查询返回限制行数(关键字:top )
    例1:select top 6 name from a
    说明:查询表a,显示列name的前6行,top为关键字(oracle 中没有top关键字
&&&&&&&&&&&& 用rownum替代)
&&&&&&&&&&&&&&&&&&&&&&&&& select&& *&& from&& a where&& rownum&6&&
   7).查询排序(关键字:order by , asc , desc)
    例:select name
      from a
      where grade&=60
      order by desc
    说明:查询表中成绩大于等于60的所有行,并按降序显示name列;默认为ASC升序
2.模糊查询
   1).使用like进行模糊查询
    注意:like运算副只用语字符串,
    例:select * from a where name like '赵%'
    说明:查询显示表a中,name字段第一个字为赵的记录
   2).使用between在某个范围内进行查询
    例:select * from a where age between 18 and 20
    说明:查询显示表a中年龄在18到20之间的记录
  & 3).使用in在列举值内进行查询(in后是多个的数据)
&&&&&&&&例:select name from a where address in ('北京','上海','唐山')
    说明:查询表a中address值为北京或者上海或者唐山的记录,显示name字段
3.分组查询
   1).使用group by进行分组查询
    例:select studentID as 学员编号, AVG(score) as 平均成绩& (注释:这里的score是列名)
      from score (注释:这里的score是表名)
      group by studentID
&&&&&&&&&& 2).使用having子句进行分组筛选
    例:select studentID as 学员编号, AVG    
from score
      group by studentID
      having count(score)&1
    说明:接上面例子,显示分组后count(score)&1的行,由于where只能在没有分组
&&&&&&&时使用,分组后只能使用having来限制条件,
4.多表联接查询
   1).内联接
    ①在where子句中指定联接条件
    例:select a.name,b.mark
      from a,b
      where a.name=b.name
    说明:查询表a和表b中name字段相等的记录,并显示表a中的name字段和表b中的
&&&&&&&&&&& mark字段
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:171007次
积分:1213
积分:1213
排名:千里之外
原创:25篇
转载:13篇
评论:16条
(6)(4)(15)(13)用VS2010做一个增删改查的小程序_编程吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:186,601贴子:
用VS2010做一个增删改查的小程序收藏
整个程序如下:用户登录--进入用户文章页面--可对文章进行增删改首先打开VS2010
文件--新建--网站确定
上海 编程上海甲骨文12校区,先就业后付款.上海甲骨文上海 编程20万学员成功就业!
接着是数据库,这里用SQL2005选择window验证登陆方式
进入数据库,点新建查询,建库加建表create database Test use Test create table UserInfo(
id int primary key identity(1,1),
username varchar(20),
password varchar(20)) create table Article(
id int primary key identity(1,1),
title varchar(50),
content varchar(100),
uid int FOREIGN KEY REFERENCES UserInfo(id)) insert into UserInfo values('test','123')最后一句插入一条数据,用户名为test
下面回到VS2010在所选位置右键添加新项--选择类--名称定义为DBcon.cs这时会提示是否放入APP_Code文件夹,选择是,就自动建了个文件夹,次文件夹只放类文件
lz 兼 群主 不要停
双击DBcon.cs添加代码using Susing System.Collections.Gusing System.Lusing System.Wusing System.Dusing System.Data.SqlC /// &summary&///DBcon 的摘要说明/// &/summary&public class DBcon{
private static SqlC
public DBcon() {
//TODO: 在此处添加构造函数逻辑
public static SqlConnection getconnection()
sqlcon = new SqlConnection("Data Source=.;Integrated Security=SSPI;Initial Catalog=Test");
} }还有另一条SQL验证登录的语句
sqlcon = new SqlConnection("server=.;uid=pwd=123456;database=Test");
在项目新建一个web窗体 名称为Login.aspx里面有个对应的cs文件 叫Login.aspx.cs打开它在 protected void Page_Load(object sender, EventArgs e)
}里添加如下代码,目的只是测试数据库是否能连接上
protected void Page_Load(object sender, EventArgs e)
SqlConnection sqlcon = DBcon.getconnection();
sqlcon.Open();
if (sqlcon.State == ConnectionState.Open)
Response.Write("数据库连接成功");
}运行一下,如果窗体显示 数据库连接成功成功 那就是成功了然后上面里面的代码也可以删除了
接着就是布局了,一个登录的页面很简单,拖拖控件就OK,但最好还是动手写代码&html xmlns=""&&head runat="server"&
&title&&/title&&/head&&body&
&form id="form1" runat="server"&
&tr&&td&用户名:&/td&&td&&asp:TextBox ID="txtusername" runat="server"&&/asp:TextBox&&/td&&/tr&
&tr&&td&密码:&/td&&td&&asp:TextBox ID="txtpassword" runat="server" TextMode="Password"&&/asp:TextBox&&/td&&/tr&
&tr&&td colspan="2"&
&asp:Button ID="btnLogin" runat="server" Text="登录" /&&/td&&/tr&
&/form&&/body&&/html&很简单的布局
双击按钮 进入事件代码注:可能设计界面显示不出控件,这时候需要手动加代码&asp:Button ID="btnLogin" runat="server" Text="登录" onclick="btnLogin_Click"/&Login.aspx.cs如下using Susing System.Collections.Gusing System.Lusing System.Wusing System.Web.UI;using System.Web.UI.WebCusing System.Dusing System.Data.SqlC public partial class Login : System.Web.UI.Page{
protected void Page_Load(object sender, EventArgs e)
protected void btnLogin_Click(object sender, EventArgs e)
if(this.txtusername.Text.Trim()=="" || this.txtpassword.Text.Trim()=="")
Response.Write("&script&alert('用户名或密码不能为空')&/script&");
App_Code文件夹需要添加两个cs文件
Method.cs 和TestService.csMethod.cs 如下using Susing System.Collections.Gusing System.Lusing System.Wusing System.Dusing System.Data.SqlC /// &summary&///Method 的摘要说明/// &/summary&public class Method{ public Method() {
//TODO: 在此处添加构造函数逻辑
/// &summary&
/// 对数据插入,更改,删除方法
/// &/summary&
/// &param name="sql"&SQL语句&/param&
public static void DataMethod(string sql)
SqlConnection mycon = DBcon.getconnection();
mycon.Open();
SqlCommand cmd = new SqlCommand(sql, mycon);
cmd.ExecuteNonQuery();
catch (Exception ex)
throw (ex);
mycon.Dispose();
mycon.Close();
/// &summary&
/// 检查数据
/// &/summary&
/// &param name="sql"&&/param&
/// &returns&&/returns&
public static bool DataCheak(string sql)
SqlConnection mycon = DBcon.getconnection();
mycon.Open();
SqlCommand cmd = new SqlCommand(sql, mycon);
SqlDataReader dr = cmd.ExecuteReader();
if (dr.Read())
dr.Dispose();
cmd.Dispose();
mycon.Dispose();
/// &summary&
/// 以DataSet获取数据
/// &/summary&
/// &param name="sql"&&/param&
/// &param name="table"&&/param&
/// &returns&&/returns&
public static DataSet GetData(string sql, string table)
SqlConnection mycon = DBcon.getconnection();
SqlCommand cmd = new SqlCommand(sql, mycon);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds, table);
catch (Exception ex)
throw (ex);
mycon.Dispose();
mycon.Close();
public static SqlDataReader GetData(string sql)
SqlConnection mycon = DBcon.getconnection();
mycon.Open();
SqlCommand cmd = new SqlCommand(sql, mycon);
SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
catch (Exception ex)
throw (ex);
TestService.cs如下using Susing System.Collections.Gusing System.Lusing System.Wusing System.Dusing System.Data.SqlC /// &summary&///TestService 的摘要说明/// &/summary&public class TestService{ public TestService() {
//TODO: 在此处添加构造函数逻辑
public Boolean Login(string username,string password)
String sql = "select * from UserInfo where username='"+username+"' and password='"+password+"'";
if (Method.DataCheak(sql))
public DataSet ShowList(int Userid)
String sql = "select * from Article where uid="+Userid+"";
DataSet ds = Method.GetData(sql, "list");
public DataSet GetUser(string username, string password)
String sql = "select * from UserInfo where username='"+username+"' and password='"+password+"'";
DataSet ds = Method.GetData(sql, "UserInfo");
public void Add(string title, string content,int uid)
String sql = string.Format("insert into Article values('{0}','{1}',{2})", title, content, uid);
Method.DataMethod(sql);
public SqlDataReader GetOneList(int id)
String sql = "select * from Article where id="+id+"";
SqlDataReader dr = Method.GetData(sql);
public void Update(string title, string content, int id)
String sql = "update Article set title='" + title + "',content='" + content + "' where id=" + id + " ";
Method.DataMethod(sql);
public void Delete(int id)
String sql = "delete from Article
where id=" + id + " ";
Method.DataMethod(sql);
Login.aspx.cs 最终如下using Susing System.Collections.Gusing System.Lusing System.Wusing System.Web.UI;using System.Web.UI.WebCusing System.Dusing System.Data.SqlC public partial class Login : System.Web.UI.Page{
TestService ts = new TestService();
protected void Page_Load(object sender, EventArgs e)
protected void btnLogin_Click(object sender, EventArgs e)
if(this.txtusername.Text.Trim()=="" || this.txtpassword.Text.Trim()=="")
Response.Write("&script&alert('用户名或密码不能为空')&/script&");
else if (!ts.Login(this.txtusername.Text.Trim(), this.txtpassword.Text.Trim()))
Response.Write("&script&alert('用户名或密码错误')&/script&");
DataSet ds = ts.GetUser(this.txtusername.Text.Trim(), this.txtpassword.Text.Trim());
Session["UID"] = Convert.ToInt32(ds.Tables["UserInfo"].Rows[0][0].ToString());
Session["Username"] = ds.Tables["UserInfo"].Rows[0][1].ToString();
Response.Write("&script&alert('登录成功');location.href='ArticleList.aspx'&/script&");
添加页面ArticleList.aspx
&%@ Page Language="C#" AutoEventWireup="true" CodeFile="ArticleList.aspx.cs" Inherits="ArticleList" %& &!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ""& &html xmlns=""&&head runat="server"&
&title&&/title&&/head&&body&
&form id="form1" runat="server"&
&p&用户名:&asp:Label ID="Label1" runat="server" Text=""&&/asp:Label&&/p&
&asp:DataList ID="Dl_List" runat="server" DataKeyField="id"
onitemcommand="Dl_List_ItemCommand"&
&ItemTemplate&
&a href="Update.aspx?id=&%# Eval("id")%& "& &%# Eval("title")%&
&asp:LinkButton ID="LB_Del" runat="server"
CommandName="delete"&删除&/asp:LinkButton&
&/ItemTemplate&
&/asp:DataList&
&div id="sorry" style="display:none" runat="server"&
&p style=" margin-left:10color:Rfont-weight:bold"&对不起,你还没有文章&/p&
&asp:LinkButton ID="LB_Add" runat="server" onclick="LB_Add_Click" &添加&/asp:LinkButton&
&/form&&/body&&/html&
对应代码using Susing System.Collections.Gusing System.Lusing System.Wusing System.Web.UI;using System.Web.UI.WebCusing System.Dusing System.Data.SqlC public partial class ArticleList : System.Web.UI.Page{
TestService ts = new TestService();
protected void Page_Load(object sender, EventArgs e)
if (!IsPostBack)
this.Label1.Text = Session["Username"].ToString();
public void DLBind()
DataSet ds = ts.ShowList(int.Parse(Session["UID"].ToString()));
this.Dl_List.DataSource = ds.Tables["List"].DefaultV
this.Dl_List.DataBind();
if (ds.Tables[0].Rows.Count &= 0)
sorry.Style["display"] = "block";
protected void LB_Add_Click(object sender, EventArgs e)
Response.Redirect("Add.aspx");
protected void Dl_List_ItemCommand(object source, DataListCommandEventArgs e)
switch (e.CommandName)
case "delete":
ts.Delete(int.Parse(Dl_List.DataKeys[e.Item.ItemIndex].ToString()));
Response.Write("&script&alert('删除成功')&/script&");
添加页面Add.aspx&%@ Page Language="C#" AutoEventWireup="true" CodeFile="Add.aspx.cs" Inherits="Add" %& &!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ""& &html xmlns=""&&head runat="server"&
&title&&/title&&/head&&body&
&form id="form1" runat="server"&
&p&添加文章&/p&
标题:&asp:TextBox ID="txtTitle" runat="server"&&/asp:TextBox&&br /&
内容:&asp:TextBox ID="txtContent" runat="server" TextMode="MultiLine"&&/asp:TextBox&&br /&
&asp:Button ID="btnAdd" runat="server" Text="添加" onclick="btnAdd_Click" /&
&/form&&/body&&/html&
对应代码using Susing System.Collections.Gusing System.Lusing System.Wusing System.Web.UI;using System.Web.UI.WebC public partial class Add : System.Web.UI.Page{
TestService ts = new TestService();
protected void Page_Load(object sender, EventArgs e)
protected void btnAdd_Click(object sender, EventArgs e)
string title=this.txtTitle.Text.Trim();
string content=this.txtContent.Text.Trim();
int uid=int.Parse(Session["UID"].ToString());
ts.Add(title, content, uid);
Response.Write("&script&alert('添加成功');location.href='ArticleList.aspx'&/script&");
添加页面Update.aspx&%@ Page Language="C#" AutoEventWireup="true" CodeFile="Update.aspx.cs" Inherits="Update" %& &!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ""& &html xmlns=""&&head runat="server"&
&title&&/title&&/head&&body&
&form id="form1" runat="server"&
&p&修改文章&/p&
标题:&asp:TextBox ID="txtTitle" runat="server"&&/asp:TextBox&&br /&
内容:&asp:TextBox ID="txtContent" runat="server" TextMode="MultiLine"&&/asp:TextBox&&br /&
&asp:Button ID="btnUpdate" runat="server" Text="修改" onclick="btnUpdate_Click" /&
&/form&&/body&&/html&
对应代码using Susing System.Collections.Gusing System.Lusing System.Wusing System.Web.UI;using System.Web.UI.WebCusing System.Dusing System.Data.SqlC public partial class Update : System.Web.UI.Page{
TestService ts = new TestService();
protected void Page_Load(object sender, EventArgs e)
if (!IsPostBack)
ListBind(Convert.ToInt32(Request.QueryString["id"].ToString()));
public void ListBind(int id)
SqlDataReader dr = ts.GetOneList(id);
if (dr.Read())
this.txtTitle.Text = dr["title"].ToString();
this.txtContent.Text = dr["content"].ToString();
protected void btnUpdate_Click(object sender, EventArgs e)
ts.Update(this.txtTitle.Text, this.txtContent.Text, Convert.ToInt32(Request.QueryString["id"].ToString()));
Response.Write("&script&alert('修改成功');location.href='ArticleList.aspx'&/script&");
出现了这么一个错误
感谢LZ分享 ..
谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢
靠谱吗、、、、、
十分感谢亲爱的小吧主
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或}

我要回帖

更多关于 mysql增删改查 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信