您的位置:首页 > 数据库

学习SQL Server 第一天对SQL Server的操作遇到的一些问题和对存储过程的创建和用ASP.net(C#)调用的学习体会!

2005-12-06 21:31 399 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/Xyindl/article/details/545307

SQLSERVER登录时未与信任 SQL Server 连接相关联错误的解决方法


原困是未设置SQL SERVER登录认证模式为混合认证模式,因为SQL SERVER默认安装后认证模式为WINDOWS认证模式,从而导致出错。

解决方法:

 1,启动SQLSERVER企业管理器,选择要进行认证模式设置的服务器。右击该服务器,在弹出菜单 中选择属性,弹出属性对话框。

 2,在属性对话框中选择安全性选项,在身份验证处选择“SQL Server和Windows”,然后确定。


SQL 字段类型: Nchar(统一编码型) 如:Sex Nchar 1 只能存一位 ,定长的,能存4000种字符,字节空间增加一倍
        ntext(统一编码型) 能存近10亿个字符,字节空间增加一倍
  Nvarchar(统一编码型) 变长的,能存4000种字符,字节空间增加一倍
  smalldatetime(日期时间类型) 精确到1/300秒或3.33毫秒
  datetime(日期时间类型)  精确到一分钟
  
设置自动增量字段:
  在SQL库中将字段定义为标识,
  在SQL库中将字段定义为标识,增量为1,就可以了。

创建简单的存储过程
 无参:
  CREATE PROCEDURE usp_UserInfo  //usep_UserInfo 存储过程名
  as 
  select * from UserInfo  /查询语句 返回表中所有记录
  GO


 带输入参数:
  CREATE PROCEDURE usp_UserInfo //usep_UserInfo 存储过程名
  @ID  int    //@ID:输入参数 类型: 整型
  as
  select * from UserInfo where UserID=@ID //查询语句 返回表中 UserID字段.value=@ID.value
  GO

 
 带输出参数:
  CREATE PROCEDURE usp_UserInfo   //usep_UserInfo 存储过程名
  @ID  int output   //@ID:输出参数 类型: 整型 output 标识是输出参数
  as
  select @ID=(select count( *) from UserInfo) //查询语句 返回表中有多少条记录赋值给@ID
  GO

心得:
 创建存储过程方面:
  1,学会了最简单的格式,但是一些选择性参数不会,只掌握了最简单的带输入和输出格式的
   2005.12.17日需明白那些选择性参数
  2,参数方面,参数类型我选用了(整型)但这是灵活的地方,即类型是可变的如 改为 varchar等,但不明白"@"这个有什么用
   2005.12.17日需明白"@"是什么
  3,参数类型后 可声明 参数的是输入还是输出 如:(output 即为输出参数)这里也是应该是灵活的 应该还有其他关键字   如: OUT 
   2005.12.17日需了解其他的关键字
  4.语句格式,以Select 语句为例 最关键的是 select @ID=(select count( *) from UserInfo) 不太明白第一个select什么   意思
   2005.12.17日需更深入的理解语句格式
 调用存储过程方面:
  
   SqlConnection Conn;
   SqlDataAdapter da;
   DataSet ds;
   String StrConn;
   //数据库联接字符串
   StrConn="server=localhost;uid=sa;pwd=yaoyuan;database=Testnet";  
   //实例化SqlConnection
   Conn=new SqlConnection(StrConn);
   //实例化SqlDataAdapter ,"usp_UserInfo":存储过程名
   da=new SqlDataAdapter("usp_UserInfo",Conn);    
   //SelectCommand.CommandType //查询命令的类型=类型为StoredProcedure(存储过程)
   da.SelectCommand.CommandType=CommandType.StoredProcedure;
   //查询命令参数 实例化new SqlParameter("@ID",SqlDbType.Int) "@ID"为存储过程里参数的名字,和字段类型为整    //型 (用于带参数的存储过程,不适用于无参的存储过程)
   da.SelectCommand.Parameters.Add(new SqlParameter("@ID",SqlDbType.Int));
   //标识参数是输入,输出还是双向的(ParameterDirection.(Output):是输出的)在存储过程的参数为输出是用到
   da.SelectCommand.Parameters["@ID"].Direction =ParameterDirection.Output;
   //给存储过程的参数赋值,在存储过程的参数为输入是用到
   da.SelectCommand.Parameters["@ID"].Value =1;
   //实例化DataSet()
   ds=new DataSet();
   //填充SqlDataAdapter ,"UserInfo"是表名
   da.Fill(ds,"UserInfo");
   //数据邦定 SDG 是DATAGrid 的名字
   this.SDG.DataSource=ds.Tables["UserInfo"];
   this.SDG.DataBind();
   //把存储过程的参数赋值给一个文本框在存储过程的参数为输出是用到
   this.TextBox1.Text=da.SelectCommand.Parameters["@ID"].Value.ToString();

 心得:
   1,利用了qlDataAdapter的SelectCommand的方法来实现的对存储过程的调用,
    2005.12.17日需了解其他的如InsertCommand等
   2,还可用Command来实现对存储过程的利用
    2005.12.17日需了解Command调用
   3,本例中用的是Int类型参数
    2005.12.17日需思考下其他类型参数的调用如:String
 一个疑问: 
  this.SDG.DataSource=ds.Tables["UserInfo"].DefaultView
   //这句中的DefaultView不理解,在存储过程参数是输入时没有问题,在存储过程参数是输出时出现"为将对象实例化   的问题"去掉DefaultView没有问题 !不明白(DefaultView)!

 总结:
  ***要努力学会灵活的运用存储过程的参数的变化和SQL语句的变化,要会灵活运用ADO.net里的调用存储过程的方法!

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐