用guid作为表的字段,写存储过程是guid列式参数,可以编译通过。但是调用的时候应该输入什么数据?在c# 调用输入a4624a9f-501d-490c-ae8f-b7d763376ea0 或者去掉 - 都是说string guid转换失败。sqlserver内调用 也一样。。求教,,,,
解决方案 »
- 请问非聚集索引有哪些缺点
- 问个基础问题,和尚请进
- 几个客户端登陆访问SQL SERVER,且都以同一用户(sa)访问SQL SERVER,SQL SERVER知不知道有几个客户端在访问,怎么获取?
- 请问表数据的增,删,改能不能用分页技术?
- 链接服务器怎么配置ODBC的数据源
- 学校上应用管理系统使用sql数据库,学生和家长还要能从internet上能查询数据库中的某些数据,怎么设计系统?
- 项目中,数据库设计遇到的难题,求高手
- 请问如何在sql server 中屏蔽系统表,不然出来一大堆表好烦
- 急!!!!!!!
- 简单的Access 中的SQL查询问题,
- 为模拟数据,怎样才能随即生成文字到数据库
- sql2005中建的表不显示
//param1.Direction = ParameterDirection.Input;
//param1.Value = "a4624a9f501d490cae8fb7d763376ea0";
//comm.Parameters.Add(param1);
加上这段 就报错 不加用默认的null则可以正常运行。
------------------------------------
D4114D98-E20E-443A-9777-63225B635EB0(所影响的行数为 1 行)
看组成方式
@guid uniqueidentifier
AS
SELECT CONVERT(varchar(36),@guid) AS v
GOusing System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Xml;
using System.Data;
using System.Data.SqlClient;namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
string constring = "Server=localhost;Initial Catalog = MyTest;Integrated Security = SSPI";
SqlConnection con = new SqlConnection(constring);
con.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "Test";
cmd.Parameters.Add("@guid", SqlDbType.UniqueIdentifier); Guid guid = Guid.NewGuid(); cmd.Parameters["@guid"].Value = guid; SqlDataReader reader = cmd.ExecuteReader(); while (reader.Read())
{
Console.WriteLine(reader.GetString(0));
}
reader.Close(); con.Close(); Console.Read();
}
}
}
不知道这种情况怎么整?
现在我将参数类型改为nvarchar(50) 可以正常使用。
SqlParameter param1 = new SqlParameter("@custid", SqlDbType.NVarChar,50);
param1.Direction = ParameterDirection.Input;
param1.Value = "a4624a9f-501d-490c-ae8f-b7d763376ea0";
comm.Parameters.Add(param1);
谢谢楼上几位热心帮忙!
但还是希望能知道我之前为什么不行
没动过,所以存储过程应该没写错。c#里也只是吧参数的类型变了,从guid换成nvarchar 这样就不报错了,而输入的值一直没变。我现在怀疑 从string 到 guid 是不是要有特定转换?
可能在sqlserver里自动执行这种转换。但是c#里需要手动执行?
你的参数类型是什么???
你传入的是字符型呀,所以应该要用VARCHAR,要不然你改GUID类型,用一个GUID值来代替试下
string guidValue = "a4624a9f-501d-490c-ae8f-b7d763376ea0 ";
GuidConverter convert = new GuidConverter();
object obj = convert.ConvertFrom(guidValue);
Guid g = (Guid)obj;
Console.Write(g.ToString());
Console.Read();