十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
增加 insert into 表(列名1,列名2,列名3...) values(值1,值2,值3......) 删除 delete from 表 where 列名=条件 修改 update 表 set 列名=值 where 列名=条件 上面几个是完整的形式~
成都网络公司-成都网站建设公司成都创新互联十余年经验成就非凡,专业从事成都网站建设、网站设计,成都网页设计,成都网页制作,软文平台,一元广告等。十余年来已成功提供全面的成都网站建设方案,打造行业特色的成都网站建设案例,建站热线:18982081108,我们期待您的来电!
麻烦采纳,谢谢!
因为本例涉及到数据库,所以在开始之前请先在数据库里新建一个名为“test”的数据库,里面新建一个表:“users”,表里有三个字段:
id(int,不可为null,设为标识符,自增),name(nvarcher(50)),age(nvarchar(50))
可以先在表里预设几条数据。
然后废话不多说,首先是 .aspx里的代码
%@ Page Language="C#" AutoEventWireup="true" CodeFile="test.aspx.cs" Inherits="test" %
!DOCTYPE html
html xmlns=""
head runat="server"
meta http-equiv="Content-Type" content="text/html; charset=utf-8"/
title/title
/head
body
form id="form1" runat="server"
div
table runat="server" id="table1"
tr
tdname:/td
td
asp:TextBox ID="tbName" runat="server"/asp:TextBox
/td
/tr
tr
tdage:/td
td
asp:TextBox ID="tbAge" runat="server"/asp:TextBox
/td
/tr
tr
tdasp:Button runat="server" ID="BtnAdd" text="add" OnClick="BtnAdd_Click"//td
tdasp:Button runat="server" ID="BtnDel" text="del" OnClick="BtnDel_Click"//td
tdasp:Button runat="server" ID="BtnUpdate" text="update" OnClick="BtnUpdate_Click"//td
tdasp:Button runat="server" ID="BtnSelect" text="select" OnClick="BtnSelect_Click"//td
/tr
/table
/div
/form
/body
/html
这段代码中只有一个table,里面包含两个textbox用于显示name和age,还有四个按钮,分别用于增删改查,这6个控件都是asp标签,和正常的html标签类似,只不过多了一些ASP.NET封装的属性,方便与后台通信,后台可以通过其属性runat="server"知道控件运行于服务器,然后通过id即可访问到该控件,进而控制控件各种属性和显示。
下面是.aspx.cs的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Data.Sql;
using System.Data;
public partial class test : System.Web.UI.Page
{
//数据连接最基本需要的两个对象
private SqlConnection conn = null;
private SqlCommand cmd=null;
//private SqlDataAdapter adapter = null;
//为了方便,设为全局对象的sql语句
private string sql = null;
//公用 打开数据库的方法
public void openDatabase()
{
conn = new SqlConnection();
conn.ConnectionString = "Integrated Security=SSPI;Data Source=(local);initial catalog=test;User ID =你的用户名;password=你的密码";
if (conn.State == ConnectionState.Closed)
{
conn.Open();
//Response.Write("scriptalert('Connected!');/script");
}
}
//默认加载页面的方法 找到年龄最大的加载
//有些问题,年龄不能相同,加载中前台的textbox里只能显示一条记录,数据拿到之后有多条只显示一条
public void load()
{
openDatabase();
cmd = new SqlCommand("select * from users where age=(select max(age) from users)", conn);
SqlDataReader dr = cmd.ExecuteReader();
if (dr.Read())
{
tbName.Text = (String)dr[1].ToString().Trim();
tbAge.Text = (String)dr[2].ToString().Trim();
}
conn.Close();
}
//根据sql语句加载信息,重载两个textbox
public void load(String sql)
{
openDatabase();
cmd = new SqlCommand(sql, conn);
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
tbName.Text = (String)dr[1].ToString().Trim();
tbAge.Text = (String)dr[2].ToString().Trim();
}
conn.Close();
}
//封装的数据库语句执行的方法
public void execute(String sql)
{
openDatabase();
cmd = new SqlCommand(sql, conn);
cmd.ExecuteNonQuery();
conn.Close();
}
//页面加载时ASP.NET首先会调用这个方法
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack) { load(); }//如果页面不是刷新,则执行,这个很重要
}
//四个按钮的方法,增删改查
protected void BtnAdd_Click(object sender, EventArgs e)
{
sql = "insert into users(name,age) values('"+ tbName.Text.ToString().Trim() +"','" + tbAge.Text.ToString().Trim() +"')";
execute(sql);
}
protected void BtnDel_Click(object sender, EventArgs e)
{
sql = "delete from users where name='" + tbName.Text.ToString().Trim() + "' and age='" + tbAge.Text.ToString().Trim()+"'";
execute(sql);
load();
}
protected void BtnUpdate_Click(object sender, EventArgs e)
{
sql = "update users set age='"+ tbAge.Text.ToString().Trim()+"' where name='" + tbName.Text.ToString().Trim() + "'";
execute(sql);
}
protected void BtnSelect_Click(object sender, EventArgs e)
{
sql = "select * from users where name='" + tbName.Text.ToString().Trim() + "'";
load(sql);
}
}
代码里没有任何异常处理的代码,没有验证,没有提示,只是很粗陋的东西,只为了让初学者明白连接数据库,操作数据的核心而已,所以在运行时如果出错不要慌张,很有可能你输入了我没有预料到的情况。
这时细读错误提示,通过理解代码,函数意图,然后找出我写的函数的错误,你会对代码有更好的理解,同时你也会思考如何避免用户误操作的问题吧。
下面稍微解说下代码,主要是后台的代码。
连接数据库,操作数据库主要需要两个类,一个是SqlConnection,一个是SqlCommand
SqlConnection用于连接数据库,打开数据库,关闭数据库。
连接数据库需要特定格式,特定参数的字符串,如代码中写的,服务器地址,数据库名称,用户名密码,以及其他参数
SqlCommand用于操作数据库,先创建基于一个特定SqlConnection对象的SqlCommand对象,通过ExecuteNonQuery方法执行给定的sql语句。
增删改都可以只是这样就操作成功,但查询因为需要把数据读到一个地方,所以有一个新的对象出现了:SqlDataReader
通过SqlCommand对象的ExecuteReader方法得到一个SqlDataReader对象,SqlDataReader对象包含数据集,通过对SqlDataReader对象遍历即可取出查询的数据。
至此,增删改查都可以实现了。
最好是每次重新开关
不关的后果是占用数据库资源,降低并发数
使用同一个连接还可能造成数据没及时更新的问题,比如方法A新增一条记录,方法B检测不到这记录(你自己测试下看是否有这种问题)
重新连接并不会带来性能开销,.net内部会自己管理连接池
C#的using SqlConnection conn =
{
}
语法是推荐的方式
php有专门的sql server操作函数,举个简单的例子,是查询的
$serverName = "localhost"; //数据库服务器地址
$uid = "root"; //数据库用户名
$pwd = "123456"; //数据库密码
$connectionInfo = array("UID"=$uid, "PWD"=$pwd, "Database"='databasename');
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn == false){
echo "连接数据库失败!";
die( print_r( sqlsrv_errors(), true));
}
$sql = "select * from user";
$query = sqlsrv_query( $conn, $sql , array(), array( "Scrollable" = SQLSRV_CURSOR_KEYSET ));
$num_rows = sqlsrv_num_rows($query);
if($num_rows 0){
while ($row = sqlsrv_fetch_array($query)){
echo $row['aaaa'];
}
}
其它的操作也同理,举一反三
第一种法方:
select 列名 from table(数据库表名) where(条件)
第二种法方:
select *(表示所有的列) from table(数据库表名) where(条件)
注意:列名与列名之间用逗号分开。
eg:
1.select ProductID,ProductName,Price
from Product
where Price5.0
2.select * from Product where Price5.0
3.如何给列加汉子名称:
格式:“‘列标题’=列名” 或 “'列名'AS 列标题”
eg:
select ProductID=‘产品编号’,ProductName,Price
from Product
where Price5.0
select '产品编号'as ProductID,ProductName,Price
from Product
where Price5.0
where 语句中可以使用逻辑运算符
AND OR NOT
eg:
select ProductID,ProductName,Price
from Product
where Price=5.0 And Price=10.0
2.使用字符串模糊匹配
格式:
expression[not] like 'string'(escape"换码字符")
3.使用查询列表
如果列的取值范围不是一个连续的区间,而是一些离散的值,此时就应使用 SQLServer 提供的另一个关键字 IN 。
语法格式:column_name [not] IN (value1,value2....)
eg:
select SaleID,SaleName,Sex,Birthday,HireDate,Address
form Seller
where SaleID IN('S01','S02',S07)
4.空值的判定
在SQL Server中,通过null。
5.top 和 distinct
语法:select top integer || top interger percent columnName
from tableName
eg:
分别从Customer表中检索出前5个及表中前20%的顾客信息。
select top 5 *
from Customer
select top 20 percent *
from Customer
查询Product 表中价格最高的6种商品。
eg:
select top 6 *
from Product
order by price desc
asc(低—高) desc(高-低)
2.向表中插入数据
语法:insert into tableName(columnName...(要插入的数据的列名)) values(expression(与columnName相对应的值))
注意:再插入数据时,对于允许为空的列可以使用NUll插入空值;对于具有默认值的列,可使用Defaulf插入默认值。
eg:
向Seller 表中插入一行数据,其中Sex字段使用默认值为‘男’,HireDate等字段均去空值。
insert into seller(saleid,saleName,sex,birthday,hireDate,address,telephone,telephone,notes)
values('s11','赵宇飞',default,'1974-07-25',null,null,null,null)
or
insert into seller(saleid,saleName,brithday)
values('s11','赵宇飞','1974-07-25')
3.修改表中的数据
语法:update tableName
set columnName=expression(...)
where search_conditions
eg:
1.将Product表中"啤酒"的价格改为4元
update product
set price=4
where productName='啤酒'(注意:一定要加条件 +“where”)
4.删除数据
语法:delete [from] tableName
where search_conditions
eg:
delete from Seller
where SaleID='s11'(注意:一定要加条件 +“where”,不然就把该表中所有的数据删除了)
用到
using System.Data.SqlClient;//命名空间
SQL 查询
string connection_str=@"Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=ChatRoom;Data Source=.\sqlexpress";
string select_str="select 字段 from 表名 [where 字段=值]";//"[之间的内容]"是可选的
SqlConnection con=new SqlConnection(connection_str);//一,创建数据库连接对象
SqlCommand com=new SqlCommand(select_str,con);//二,创建数据操作对象
con.Open();//现在用的是连接操作方法,所以要先打开这个数据连接对象的连接
DataReader _dataReader = com.ExcuteReader();
while(_dataReader.Next())//遍历
{
string temp += dataReader["字段"].ToString()+"\r\n";
}
con.Close();//关闭数据库连接对象
MessageBox.Show(temp);
以上这种方法是称为连接式操作。
以下这种方法是称为非连接式操作。
using System.Data.SqlClient;//因为要用到SQL对象
using System.Data;//要用到数据集对象,如以下将要用到:DataSet对象
string connection_str=@"Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=ChatRoom;Data Source=.\sqlexpress";
string select_str="select 字段 from 表名 [where 字段=值]";//"[之间的内容]"是可选的
SqlConnection con=new SqlConnection(connection_str);//一,创建数据库连接对象
SqlDataAdapter DataAdapter=new SqlDataAdapter(select_str,con);//二,创建数据操作对象
DataSet ds=new DataSet();
DataAdapter.Fill(ds);//DataAdapter.Fill(填充对象)//函数是将除处理的select_str语句得来结果填充到指定的填充对象
string temp="";
foreact(DataRow dr in ds.Table[0].Rows)//遍历
{
temp+=dr["字段"].ToString();
}
MessageBox.Show(temp);
至少楼主说的要增删改查。
就是修改select_str字符串就行了。
select(查询):"Select 字段 from 表名 [where 条件]";
update(更新):"Update 列名 set 字段=值 [where 条件]";
insert(插入):"Insert [into] 表名 Values(字段[,字段,...,...]) [where 条件]";
delete(删除):"delect from 表名 [where 条件]";
当然,除了select(查询)是有返回数据,其它update(更新),insert(插入),delete(删除)都只是返回操作状态值。