首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

新手请问:asp.net写数据库

2012-01-26 
新手请教:asp.net写数据库所给代码均可以通过执行,有几点不明白的地方,盼指教!1,SqlConnectionconnewSqlC

新手请教:asp.net写数据库
所给代码均可以通过执行,有几点不明白的地方,盼指教!
1,
  SqlConnection   con   =   new   SqlConnection( "server=localhost;database=;uid=;pwd= ");
                                con.Open();
                                SqlCommand   com   =   new   SqlCommand( "reg ",   con);
                                com.CommandType   =   CommandType.StoredProcedure;

                                SqlParameter   sp   =   new   SqlParameter( "@user ",   SqlDbType.VarChar,   50);
                                sp.Value   =   Request[ "user "];
                                com.Parameters.Add(sp);

com.ExecuteNonQuery();
                                Response.Write( " <script> alert( '注册成功! ');location= 'Default.aspx ' </script> ");
此段代码是调用一个数据库里的存储过程(reg)实现注册功能,
可是没有发现关闭   释放资源的语句!  
这个关闭   资源的释放   是本来就少了呢?还是有什么隐式程序实现了?

2,
一个新闻发布系统,是类和界面分离的方式实现的,该方法也可以执行,是通过缓存来实现一个自动添加的功能~  
撇开自动不自动不谈,就拿新闻发布来讲,用这种方法有什么好处?   我直接通过string写到数据库里不就可以了么?
3,
接问题2
private   const   string   SQL_INSERT_NEWSINFO   =   "INSERT   INTO   newsinfo   VALUES(@title,@data,@date,   @imageurl,@category) ";
        private   const   string   PARM_NEWS_TITLE   =   "@title ";//定义

SqlParameter[]   newsParms   =   GetParameters();//获取缓存参数

newsParms[0].Value   =   newsTitle;//给参数赋值

foreach   (SqlParameter   parm   in   newsParms)
cmd.Parameters.Add(parm);//遍历,并填加到sqlcommand命令中

parms   =   new   SqlParameter[]   {
                                        new   SqlParameter(PARM_NEWS_TITLE,   SqlDbType.NVarChar,20),
……
                }//缓存不存在的情况下,建立参数列表

然后执行;

private   const   string   PARM_NEWS_TITLE   =   "@title ";
这行,是赋值还是什么?  

盼赐教!!!

[解决办法]
SqlConnection con = new SqlConnection( "server=localhost;database=;uid=;pwd= ");
con.Open();
SqlCommand com = new SqlCommand( "reg ", con);
com.CommandType = CommandType.StoredProcedure;

SqlParameter sp = new SqlParameter( "@user ", SqlDbType.VarChar, 50);
sp.Value = Request[ "user "];
com.Parameters.Add(sp);

com.ExecuteNonQuery();
con.Closed()//可能是忘关了
Response.Write( " <script> alert( '注册成功! ');location= 'Default.aspx ' </script> ");
[解决办法]
1.我觉得本来就少了。
2.愚昧没看明白。
3.PARM_NEWS_TITLE 不就是一个参数的名称吗?
------解决方案--------------------


1. 上面几位已经说了,估计是忘写了
2. 用这种方面,系统的可移值性比较好。比如说,现在用的是SqlServer数据库,随着需要的改变,要用Oracle数据库了,Oracle数据库的SQL语句与Access是不同的,如果按楼主说的,那皆不是要重新写一个新闻系统了。而现在分层的话,只要写一个支持Oracle的数据层就可以了,其他的全部不用改
3. private const string PARM_NEWS_TITLE = "@title "; 这句的意思是定义一个常量PARM_NEWS_TITLE, 给他赋值为@title。常量定义好后,以后就不能变了。而且常量是静态的(不能用static关键字显式表示),被所有的对象共享,节省内存。
[解决办法]
帮顶.

热点排行