![]() |
ASP.NET读写删查SQL数据库
1.每步都要用数据库连接字符串 :当前项目中先声明
public static string connstr = "Data Source=.;Password=*****;User ID=sa;Initial Catalog=my";
字符串具体内容:通过配置数据源来完成,确定服务器名称 登录用户名 密码 数据库名称等信息
2.实例化连接
SqlConnection conaa = new SqlConnection(connstr);
if (conaa.state==ConnectionState.Closed) //数据连接是不是关闭状态
{conaa.Open();} //打开连接
3.读数据表:读取或判断是不是包含指定条件的记录:id为条件,province为表名,provinceid为对应的字段名
string sqla=string.format("select * from province where provinceid='{0}'",id);
SqlCommand cmd=new SqlCommand(sqla,conaa);
SqlDataReader cc=cmd.ExecuteRead();
if (cc.read()) //用这个条件来判断是不是找到了
{
Response.Write("<script>alert('数据找到了')</script> //提示数据找到了
string aa=cc["provincename"].tostring(); //也可以读取找到的数据来做进一步的操作
}
//这是当只有一个记录符合条件这样来判断
string aaa="";声明一个空串
while (cc.read()) 循环读取数据
{
if (aaa=="") //当为空串时表明没有累加过,是第一次累加,所以不加逗号
aaa+=cc["provincename"]
else
aaa+=","+cc["provincename"]//不是空串,则表明至少累加过一次了,所以这次需要先加逗号
} //当找到多条记录时这样来循环查找,每找到一行就读取"provincename"字段的值,并累加到变量aaa中,值之间用逗号分隔
4.写数据:就是插入记录:假设当前表名:province,只有两个字段:provinceid,provincename;
string sfid=txtid.text.trim();//用变量来保存需要插入的provinceid的值
string sfname=txtsfname.text.trim(); //用变量来保存需要插入的provincename的值
string sqla=string.format("insert into province (provinceid,provincename) values ('{0}','{1}')",sfid,sfname);
Sqlcommand cmd=new SqlCommand(sqla,conaa);
int hs = cmd.ExecuteNonQuery();//根据受影响的行数来判断是否插入成功
if (hs > 0)
{
Response.Write("<script>alert('注册成功!')</script>");
con.Close(); //成功后关闭连接
txtmm.Text = "";//清空文本框内容,等待输入新内容
txtyhm.Text = "";
}
else
{
Response.Write("<script>alert('注册失败!')</script>");
con.Close();//注册失败,也得关闭连接;文本框不清空,修改后再插入
}
5.删除数据:假设当前表名:province,只有两个字段:provinceid,provincename;
string sfid=txtid.text.trim();//用变量来保存需要删除记录对应的provinceid的值,删除必须加条件,否则都被删除了
string sqla=string.format("delete from province where provinceid='{0}'",sfid);
SqlCommand cmd=new SqlCommand(sqla,conaa);
int hs = cmd.ExecuteNonQuery();//根据受影响的行数来判断是否插入成功
if (hs > 0)
{
Response.Write("<script>alert('删除成功!')</script>");
con.Close(); //成功后关闭连接
}
else
{
Response.Write("<script>alert('删除失败!')</script>");
}
6.更新数据:假设当前表名:province,只有两个字段:provinceid,provincename;
string sfname=txtname.text.trim();//用变量来保存需要删除记录对应的provinceid的值,删除必须加条件,否则都被删除了
string sqla=string.format("update province set provincename='{0}' where provinceid='{1}'",sfname,sfid);
SqlCommand cmd=new SqlCommand(sqla,conaa);
int hs = cmd.ExecuteNonQuery();//根据受影响的行数来判断是否插入成功
if (hs > 0)
{
Response.Write("<script>alert('删除成功!')</script>");
con.Close(); //成功后关闭连接
}
else
{
Response.Write("<script>alert('删除失败!')</script>");
}
7.插入时有可能由于主键或不能重复的字段冲突而造成插入失败,想法遇到这情况能自动做更新操作最好了
方法一:插入前先查找相关的主键或不能重复的字段,看看有没有重复的,如果没有,则插入;如果有,则更新
方法二:只能在MYSQL中实现
语法如下:INSERT INTO table1 (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=c+1;
假设table1表中的主键或unique索引是a字段的话,
当执行上面sql时候,如果数据库table1表中已存在a=1的记录则更新这条记录的c字段的值为原来值+1,
ON DUPLICATE KEY UPDATE 语法的目的是为了解决当表中UNIQUE索引或者primary key(主键)出现重复时,就会执行update操作,返回值2,
如果没有出现重复就执行insert操作,返回值1。
INSERT INTO test.`User`(uid,name,sex,age) VALUES(1,"xiaowang2","male",22)
ON DUPLICATE KEY UPDATE name=VALUES(name),sex=VALUES(sex),age=VALUES(age)
如果在INSERT语句末尾指定了ON DUPLICATE KEY UPDATE,并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,
则执行旧行UPDATE;如果不会导致唯一值列重复的问题,则插入新行。
注意:ON DUPLICATE KEY UPDATE只是MySQL的特有语法,并不是SQL标准语法!
Region1