asp.net开发mysql注意事项
2012-09-26 10:29
417 查看
一:mysql数据库的表的创建,主键,外键的设置
1:安装的时候选择utf-8字符2:创建数据库的时候选择默认
3:创建表引擎字符都选择默认
MySQL支持外键的存储引擎只有InnoDB,在创建外键的时候,要求父表必须有对应的索引,子表在创建外键的时候也会自动创建对应的索引。在创建索引的时候,可以指定在删除、更新父表时,对子表进行的相应操作,包括RESTRICT、NOACTION、SETNULL和CASCADE。其中RESTRICT和NOACTION相同,是指在子表有关联记录的情况下父表不能更新;CASCADE表示父表在更新或者删除时,更新或者删除子表对应记录;SETNULL则是表示父表在更新或者删除的时候,子表的对应字段被SETNULL。
因为只有InnoDB引擎才允许使用外键,所以,我们的数据表必须使用InnoDB引擎。
我所使用的版本是Mysql5.1版本的mysql-5.1.51-win32.msi使用的mysql图形界面是SQLyog-10.0.0-0.zip
但是保存之后,点击修改一定要确定是这样的
接下来是外键,创建一个新闻回复表,其中新闻回复表的newsid这个外键引用的是新闻表的newsid
设置回复表的newsid外键,引用的是news表的newsid主键,并且做了一个级联删除,当news表的newsid删除的时候,外检表新闻回复表也会跟着删除
二:如果是.net2.0环境,则无法使用微软企业库5.0版本,(微软企业库5.0版本支持.net3.5和4.0,不支持2.0)
三:asp.net调用mysql的方法asp.net中使用MYSQL参数化的方法需要将sql中的@换成?
MySqlConnectionconn=newMySqlConnection(connStr); conn.Open(); MySqlCommandcmd=newMySqlCommand("selectcount(1)fromqyexam_noticewheretitle=?title",conn); cmd.Parameters.Add(newMySqlParameter("?title","《测试试卷》2011/12/1410:47:00开始")); objectobj=cmd.ExecuteScalar(); conn.Close(); Response.Write("结果:"+obj);
四:mysql存储过程特殊的规范
DELIMITER$$CREATE PROCEDURE`aaa`(p_id VARCHAR(64)) BEGIN SELECT* FROMnews WHEREnewsid=p_idLIMIT1; END$$ DELIMITER;
注意要写DELIMITER$$开头和DELIMITER;结尾,begin和end之间的语句记得写;结尾,然后存储过程的名字和特殊的字符不是[]而是左上角tab键上的`
五:调用存储过程的时候,参数的顺序必须要和存储过程里面的参数顺序一模一样,如何调用存储过程
CREATE PROCEDUREtb_ad_hitrecord_GetCount(p_starttime DATETIME,p_endtime DATETIME,p_AdId INT) BEGIN SELECT COUNT(1) FROMtb_ad_hitrecord WHERE(`HitDate` BETWEENp_starttime ANDp_endtime) ANDAdId=p_AdId; END$$
DELIMITER;
在mysql的查询分析器调用的时候:如何调用存储过程呢?用CALL关键字,时间用逗号而不是#号
CALL`tb_ad_hitrecord_GetCount`('2012-07-0415:16:25','2012-07-0709:11:36',1)
CALL`tb_ad_hitrecord_ADD`(1,'#2012-07-05#')
同样的,在asp.net的代码中调用存储过程的时候,写参数也一定要按照mysql的存储过程的参数来写,顺序不能像sql那样乱调。
六:获取刚插入的数据的id,使用selectmax(id)fromtable?mysql也提供了一个类似于sqlserver一样的@@identity这样的函数叫做
LAST_INSERT_ID()一般情况下获取刚插入的数据的id,使用selectmax(id)fromtable是可以的。但在多线程情况下,就不行了。在多用户交替插入数据的情况下max(id)显然不能用。这就该使用LAST_INSERT_ID了,因为LAST_INSERT_ID是基于Connection的,只要每个线程都使用独立的Connection对象,LAST_INSERT_ID函数将返回该Connection对AUTO_INCREMENT列最新的insertorupdate操作生成的第一个record的ID。LAST_INSERT_ID是基于单个connection的,不可能被其它的客户端连接改变。
DELIMITER$$USE`edt_date`$$ DROP PROCEDURE IF EXISTS`tb_ad_hitrecord_ADD`$$ CREATEDEFINER=`root`@`localhost` PROCEDURE`tb_ad_hitrecord_ADD`(p_AdId INT,p_HitDate DATETIME) BEGIN INSERT INTOtb_ad_hitrecord(AdId,HitDate) VALUES(p_AdId,p_HitDate);
--selectmax(HitId)fromtb_ad_hitrecord;SELECTLAST_INSERT_ID(); END$$
DELIMITER;
注意事项
(1)、查询和插入所使用的Connection对象必须是同一个才可以,否则返回值是不可预料的。
mysql>SELECTLAST_INSERT_ID();
->100
使用这函数向一个给定Connection对象返回的值是该Connection对象产生对影响AUTO_INCREMENT列的最新语句第一个AUTO_INCREMENT值的。这个值不能被其它Connection对象的影响,即它们产生它们自己的AUTO_INCREMENT值。
(2)、LAST_INSERT_ID是与table无关的,如果向表a插入数据后,再向表b插入数据,LAST_INSERT_ID返回表b中的Id值。
(3)、假如你使用一条INSERT语句插入多个行,LAST_INSERT_ID()只返回插入的第一行数据时产生的值。其原因是这使依靠其它服务器复制同样的INSERT语句变得简单。
mysql>INSERTINTOtVALUES
->(NULL,‘Mary’),(NULL,‘Jane’),(NULL,‘Lisa’);
mysql>SELECT*FROMt;
|id|name|
+—-+——+
|1|Bob|
|2|Mary|
|3|Jane|
|4|Lisa|
mysql>SELECTLAST_INSERT_ID(); //这就是我要说明的关键问题。
|LAST_INSERT_ID()|
|2|
虽然将3个新行插入t,对这些行的第一行产生的ID为2,这也是LAST_INSERT_ID()返回的值。
(4)、假如你使用INSERTIGNORE而记录被忽略,则AUTO_INCREMENT(自动增长列的)计数器不会增量,而LAST_INSERT_ID()返回0,这反映出没有插入任何记录。
七:mysql如何插入带时间的sql语句,不是用#号,而是用逗号即可
insertintonews(id,time)values(1,'2012-07-0415:16:25')相关文章推荐
- Asp.net &C#开发中的一些注意事项及小技巧
- ASP.NET开发大型网站需要注意的事项
- Asp.net &C#开发中的一些注意事项及小技巧【转】
- ASP.NET&C#开发的注意事项
- asp.net mvc 开发注意事项
- 64位系统使用VS2010开发32位ASP.NET应用--注意事项
- mysql+asp.net开发注意大全:mysql创建数据库的时候,创建新用户,并且付给权限。mysql存储过程的编写,mysql数据库引擎的区别,mysql数据库文件夹备份
- asp.net开发注意事项
- 在ASP.NET中使用MySQLMembershipProvider注意事项
- asp.net 调用 mysql 分页存储过程,repeater使用mysql分页存储过程,mysql 存储过程的注意事项
- asp.net web api 开发时应当注意的事项
- Asp.net &C#开发中的一些注意事项及小技巧
- AspDotNetStorefront中事件处理页面开发的注意事项
- 项目开发中的一些注意事项以及技巧总结 基于Repository模式设计项目架构—你可以参考的项目架构设计 Asp.Net Core中使用RSA加密 EF Core中的多对多映射如何实现? asp.net core下的如何给网站做安全设置 获取服务端https证书 Js异常捕获
- 将Asp.Net网站发布到IIS的四种方法及注意事项
- 阿里云Centos7.2搭建java开发环境 jdk tomcat mysql注意事项
- ASP.NET系统整合DiscuzNT3.6之注意事项
- ASP.NET注意事项
- dwz与asp.net webForm结合的注意事项
- ASP.NET生成WORD文档服务器部署注意事项