您的位置:程序门 -> .net技术 -> c#



将字符串转换为 uniqueidentifier 时出现语法错误


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


将字符串转换为 uniqueidentifier 时出现语法错误[已结贴,结贴人:naicha_521]
发表于:2007-03-01 11:07:42 楼主
如何为uniqueidentifier   类型的字段赋空值啊?
  当把id=null   或者id= " "   插入uniqueidentifier类型的字段中都会报错!
发表于:2007-03-01 11:16:531楼 得分:0
dbnull.value
发表于:2007-03-02 18:53:352楼 得分:0
guid   id   =   guid.empty;
发表于:2007-03-02 18:54:293楼 得分:0
dbnull
发表于:2007-03-02 19:00:114楼 得分:0
lxcnn(过客)
guid   id   =   guid.empty;

这个是正解
发表于:2007-03-03 11:53:255楼 得分:0
dbnull
发表于:2007-03-06 11:28:126楼 得分:0
谢谢各位前辈的回复,上面的答案我都已试过,都会报错!可能是我没有叙述清楚.

我要在外健表table1中插入带有id字段的一条记录,在设计表时此外键表中的id字段可为空.
在查找主键表table2的过程中没有找到相应的记录,此时得到的id字段就应为空值,此时我要把此空的id字段的值也就是一个null值写入外健表table1的id字段中.
但此时总会报错 " "   在转化成uniqueidentifier时出现错误!
发表于:2007-03-06 11:32:167楼 得分:0
id定义成object类型的,不要定义成guid的.然后
id   =   dbnull.value;
发表于:2007-03-06 11:35:208楼 得分:0
我定义的id不是guid型的,是string类型的.
发表于:2007-03-06 11:38:429楼 得分:0
dbnull.value   赋这个值不行吗?
发表于:2007-03-06 11:43:4210楼 得分:0
支持一下!
发表于:2007-03-06 11:49:2411楼 得分:0
把id定义成object的还是不行   还是类型转化出现错误
难道是我的插入语句有错吗?

"   insert   into   table1(moid,...fuid,drid,exid,void.....)   values   (   ' "   +   modid   +   " ',... ' "+   fuid   +   " ', ' "   +   drid   +   " ', ' "   +   paid   +   " ', ' "   +   void   +   " '.....)
这样有错吗?

发表于:2007-03-06 13:41:5812楼 得分:0
用dbnull.value   也不行,同样的错误:(
发表于:2007-03-07 15:40:5713楼 得分:0
hbxhtlx(平民百姓)老大,在短信息中发不了这么多代码只有在这给您看了
以下是代码.在代码中,我把exid等定义成object类型,将空值写成dbnull.value没用,将exid等定义成string类型,将空值写成 " "也不行,最后报错 "将字符串转成成uniqueidentifier     类型时出错!请老大一定帮帮我!!!
  private   void   cmdadd_click(object   sender,   eventargs   e)
{     string       exid,   void,   trid;          
    if   (combobox6.selectedindex   ==   -1)     //当没有选择下拉框时
        exid   =   " ";
        else
          exid   =   mytable6.rows[combobox6.selectedindex][ "exid "].tostring();

            if   (combobox7.selectedindex   ==   -1)
                void   = " ";
              else
      void   =   mytable7.rows[combobox7.selectedindex][ "void "].tostring();
                  if   (combobox8.selectedindex   ==   -1)
                      trd   =   " ";
                else
      trid   =   mytable8.rows[combobox8.selectedindex][ "trid "].tostring();
    if   (textbox2.text   ==   " "   )   //主要信息必须填写完整,才能保存数据
        {             messagebox.show( "请输入完整的信息! ",   "添加信息 ");
                  return;
              }
          else
      {   string   strinsert   =   "   insert   into   table1   (stud_id,stu_code,exid,void,trid   )   values   (   ' "   +   modid   +   " ', ' "

      +   textbox2.text   +   " ', ' "   +   exid   +   " ', ' "+   void   +   " ', ' "   +   trid   +   " ' ");

          sqlcommand   cmd1   =   new   sqlcommand(strinsert,   sqlconnection1);
                                        sqlconnection1.open();
                                        cmd1.EXECutenonquery();
                                        sqlconnection1.close();
                                }

                              }
发表于:2007-03-07 15:50:0414楼 得分:0
你这代码有好多错误啊...
void是关键字...
发表于:2007-03-07 15:54:3815楼 得分:20
你不能直接用拼字符串来生成一个sql语句,你这种情况一定要用参数来表示才行!

string   strinsert=....
要改成:

string   strinsert   =   "   insert   into   table1   (stud_id,stu_code,exid,void,trid   )   values   (   @stud_id,@stu_code,@exid,@void,@trid) ";
或改成存储过程.

然后用sqlparameter来把实际的参数传到这个sqlcommand中再执行才可以.
发表于:2007-03-07 15:58:0016楼 得分:0
例如:

string   strinsert   =   "   insert   into   table1   (stud_id,stu_code,exid,void,trid   )   values   (   @stud_id,@stu_code,@exid,@void,@trid) ";

sqlcommand   cmd1   =   new   sqlcommand(strinsert,   sqlconnection1);
cmd1.parameters.add(new   sqlparameter( "@stud_id ",   value));//或指定参数类型等
cmd1.parameters.add.....

sqlconnection1.open();
cmd1.EXECutenonquery();
sqlconnection1.close();
发表于:2007-03-07 16:00:2817楼 得分:0
学习ing   ...
发表于:2007-03-07 16:02:4218楼 得分:0
友情up
发表于:2007-03-07 16:55:0519楼 得分:0
感觉要嘛是你选择的方法没对,因为有sqltype.xxx的,要嘛就是string转换需要有特殊方法,比如int.pase
发表于:2007-03-07 16:57:4220楼 得分:0
老大,那里面的字段是我临时改的,只是示例说明问题.:)
非常感谢老大给我解答,我试试吧!但是不知道写成参数和我那样写有什么区别?:)
发表于:2007-03-07 17:00:5921楼 得分:0
写成参数

拼起来的字符串是有区别的,
最明显的一个例子就是,比如一个二进制的字段,是不能用字符拼一个insert   into语句的,但是用parameter的方法是可以的.

因为parameter提供了值的类型,比如dbtype,或sqldbtype,这样就保证了在数据库端数据上处理的明确性.
发表于:2007-03-07 17:27:4222楼 得分:0
老大,还是不行,同样有错
发表于:2007-03-07 17:30:0023楼 得分:0
只要我的参数值为空就会出现这样的类型转化错误!
我觉得不是语句的问题,而是参数值为空值时如何赋值给uniqueidentifier   类型!
发表于:2007-03-07 17:32:0924楼 得分:0
楼主你要知道,数据库的<null> 值是个特殊的值,你只能通过dbnull.value来设置.

一个uniqueidentifier   类型的值,是可以用dbnull.value的.
发表于:2007-03-07 17:52:3625楼 得分:0
我是将uniqueidentifier类型的字段设置成将object   类型的,当为空值时就用dbnull.value   来为它赋值的.
可是还是出错!
发表于:2007-03-07 18:33:4526楼 得分:0
(平民百姓)
老大,问题终于解决了.非常感谢您的帮助.分给啦!呵呵:)


快速检索

最新资讯
热门点击