【问题标题】:Android java insert to sql-server datatype (conversion failed when converting from a character string to uniqueidentifier)Android java insert to sql-server datatype(从字符串转换为uniqueidentifier时转换失败)
【发布时间】:2017-02-16 04:16:34
【问题描述】:

我在使用 MySQL 的 uniqueidentifier 时遇到问题,当我尝试将数据数组插入到其中一个列中具有 uniqueidentifier 数据类型的表中时,它只是说在将字符串转换为 uniqueidentifier 时转换失败。

这里是 MySQL 块:

    if (Gender.trim().equals(""))
                z = "Value not enough";
            else {
                try {
                    Connection con = connectionClass.CONN();
                    if (con == null) {
                        z = "Error in connection with SQL server";
                    } else {


                        final String query = "USE [dbtest]" +
                                "insert into [tablename] ([DepositorID],[Name],[Sex],[DateOfBirth],[Race],[Occupation],[Occupation_others],[AddressLine1],[AddressLine2],[Postcode]," +
                                "[City],[State],[AgeSah],[TelNo],[HPNo],[Email],[Bank],[BankNo],[CreatedBy],[CreatedOn],[ModifiedBy],[ModifiedOn]) values " +
                                "('" + nokppv + "','" + Namev + "','" + sex + "','" + Date + "','" + Race + "','" + Occupation + "','" + Occupation2 + "','" + Address + "','" + Address2 +
                                "','" + Postcode + "','" + City + "','" + State +  "','" + agesah +  "','" + telno +  "','" + Phonev  + "','"+ Email  +"','"+ Bank  +"','"+ BankNo +
                                "',' "+ chars +"','"+ CreatedOn +"','"+ chars1  +"','" + ModifiedOn + "')";
                        System.out.println("Query:"+query);
                        Statement stmt = con.createStatement();
                        ResultSet rs = stmt.executeQuery(query);

                        if (rs.next()){
                            z = "Registration successful";
                            isSuccess = true;
                        }else {
                            z = "Registration error";
                            isSuccess = false;
                        }


                    }
                } catch (Exception ex) {
                    isSuccess = false;
                    z = "Exceptions";
                    System.err.println("Message:"+ex.getMessage());
                    System.err.println("Cause:"+ex.getCause());
                    System.out.println("Query:"+query);
                }
            }


    }

        return z;
    }

我已经尝试过的东西

  1. uniqueidentifier 的列允许为 null 并尝试将其插入为 null,同样的错误。

  2. 试过android GUID代码,同样的错误,发现sql server uid是顺序的,与java uid不同。

  3. 尝试从 JDBC 库中声明 UniqueIdentifier 变量,同样的错误。

我确实发现了一些提到 UID 生成器的帖子,它会生成与 SQL UID 数据类型兼容的顺序 UID,但帖子的答案非常模糊。 我只需要提示或一些示例来制作我自己的代码我希望我提供足够的数据。有人愿意给我看看绳子吗?顺便说一句,我正在使用 MSSQL 2016 并使用 Android Studio 作为 Java 平台。

【问题讨论】:

  • 你应该使用CONVERTNEWID
  • DepositorIDuniqueidentifie 并且您尝试传递包含stringnokppv
  • 我会尝试使用 CONVERT,但 NEWID 不是来自 C# 吗? java中也有NEWID吗?
  • 除 CreatedBy 和 ModifiedBy 之外的所有变量都是 String,只有这两个是 UniqueIdentifier
  • 顺便说一句,它的变量chars和chars1,尝试将字符串转换为char,无济于事

标签: java android sql-server


【解决方案1】:

试试:

+"CONVERT(uniqueidentifier,'"+chars+"' )"

+"CONVERT(uniqueidentifier,'"+chars1+"' )"

你应该得到:

values ('840403055141','Shariffah Saralisha binti Syed Ali','P','04-03-1984','K','015','null','No 43, Jalan valera 1/3, Taman Tingtong','null','43900','Sepang','K','Y','null','0123456789‌​','Demo@emailhost.co‌​m','123','123',CONV‌​ERT(uniqueidentifier‌​,'55555555-2222-2222‌​-2222-222222222222')‌​,'2017-02-16 19:59:22','CONVERT(uniqueidentifier,'22222222-2222-2222-2222‌​-222222222222'),'nul‌​l') 

【讨论】:

  • 错误消失了,非常感谢,但是接下来会弹出这个错误
  • 值 ('840403055141','Shariffah Saralisha binti Syed Ali','P','04-03-1984','K','015','null','No 43, Jalan valera 1/3, Taman Tingtong','null','43900','Sepang','K','Y','null','0123456789','Demo@emailhost.com','123', '123','CONVERT(uniqueidentifier,'55555555-2222-2222-2222-222222222222'),'2017-02-16 19:59:22','CONVERT(uniqueidentifier,'22222222-2222-2222-2222-222222222222 '),'null')
  • 错误是 Incorrect syntax near '5555555' 。我检查了查询,但没有明显的问题。我知道它的第一个唯一 ID,即 CreatedBy,但它之前的两列允许为空
  • 我尝试转换它,这很好,@ReanyMeany 检查我的更新。
  • 我尝试直接在 mssql 中运行插入,但出现从字符串转换为唯一标识符失败的错误。是否有任何设置需要我拨动开关才能使其工作?和你更新的那个,那个没有撇号?
猜你喜欢
  • 1970-01-01
  • 2015-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多