简体   繁体   English

SQL Server:语句已终止

[英]SQL server: The statement has been terminated

i've been working for this error for about two hours, i feel there's no mistake in my query, but I keep get this error. 我已经为这个错误工作了大约两个小时,我觉得查询中没有错误,但是我一直收到此错误。 The worst thing is it doesn't give any further information about what causing the error. 最糟糕的是,它没有提供有关导致错误的原因的任何更多信息。 I'm using ASP classic and SQL server. 我正在使用ASP Classic和SQL Server。 can you help me guys? 你能帮我吗? here's my query: 这是我的查询:

    query = "INSERT INTO [127.0.0.1].[tv].[dbo].[BH_REG]([REG_ID],[NAME],[PHONE],[EMAIL],[INST_ADDRESS],[ZIPCODE],[BIRTH_PLACE],[BIRTH],[SEX],[CABLE_DISTANT],[SID],[BID],[STREET_NUMBER],[PID], [REG_DATE], [REG_STATUS], [ORDER_STATUS], [ID_TYPE], [ID_NUMBER], [PROMO_CODE], [VIRTUAL_NUMBER], [BCA_ID], [SALES_CODE], [MAIN_PACKAGE], [MOBILE_PHONE], [PAY_METHOD], [COORDINATE], [TAP_ID], [TAP_PORT_ID],[EXPECTED_SCHEDULE]) "

query = query & "VALUES('"& idxx &"','"& name &"','"& mobilephone &"','"& email &"','"& instaddress &"','"& zipcode &"','"& birthplace &"','"& birth &"','"& sex &"','"& jarakKabel &"','"& sid &"','"& bId &"','"& streetNumber &"','"& aId &"', NULL,'COVERED','REGISTERED','"& idtype &"','"& idnumber &"','"& promoidtext &"','" & virtualcode &"', NULL,'"& salescode &"','"& PackageGroup &"','"& mobilephone &"','"& paymethod &"', '"& installationCoordinate &"', NULL, NULL, '"& expected_schedule &"')"
            Conndev.execute(query)

The error: 错误:

Microsoft OLE DB Provider for ODBC Drivers error '80040e14' Microsoft OLE DB提供程序的ODBC驱动程序错误'80040e14'

[Microsoft][ODBC SQL Server Driver][SQL Server]The statement has been terminated [Microsoft] [ODBC SQL Server驱动程序] [SQL Server]该语句已终止

/registration/register.asp, line 256 /registration/register.asp,第256行

I also get the same error when i tried to insert getdate() on [REG_DATE] field 当我尝试在[REG_DATE]字段上插入getdate()时,我也遇到相同的错误

After getting some clue from you guys, I tried to parameterize my query. 从你们那里获得一些线索之后,我尝试对查询进行参数化。 Unfortunately another error occurred: 不幸的是,另一个错误发生了:

ADODB.Command error '800a0bb9'
Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.

And here's updated code: 这是更新的代码:

            <!--#include virtual="ADOVBS.INC"-->

            Set conn = Server.CreateObject("ADODB.Connection")
            conn.Open 'my connection string goes here
            set cmd = server.createobject("ADODB.Command")

            query = "INSERT INTO BH_REG (REG_ID,NAME,PHONE,EMAIL,INST_ADDRESS,ZIPCODE,BIRTH_PLACE,BIRTH,SEX,CABLE_DISTANT,SID,BID,FLOOR,STREET_NUMBER,PID,REG_DATE,REG_STATUS, ORDER_STATUS,ID_TYPE, ID_NUMBER, PROMO_CODE, VIRTUAL_NUMBER, BCA_ID, SALES_CODE, MAIN_PACKAGE, MOBILE_PHONE, PAY_METHOD, COORDINATE, TAP_ID, TAP_PORT_ID,EXPECTED_SCHEDULE) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"


            cmd.ActiveConnection = conn
            cmd.CommandText = qText
            cmd.CommandType = adCmdText
            cmd.CommandTimeout = 900
            cmd.Parameters.Append cmd.CreateParameter("@REG_ID", adVarChar, adParamInput, 20, idxx)
            cmd.Parameters.Append cmd.CreateParameter("@NAME", adVarChar, adParamInput, 100, name)
            cmd.Parameters.Append cmd.CreateParameter("@PHONE", adVarChar, adParamInput, 100, mobilephone)
            cmd.Parameters.Append cmd.CreateParameter("@EMAIL", adVarChar, adParamInput, 100, email)
            cmd.Parameters.Append cmd.CreateParameter("@INST_ADDRESS", adVarChar, adParamInput, 500, instaddress)
            cmd.Parameters.Append cmd.CreateParameter("@ZIPCODE", adVarChar, adParamInput, 5, zipcode)
            cmd.Parameters.Append cmd.CreateParameter("@BIRTH_PLACE", adVarChar, adParamInput, 100, birthplace)
            cmd.Parameters.Append cmd.CreateParameter("@BIRTH", adDate, adParamInput, , birth)
            cmd.Parameters.Append cmd.CreateParameter("@SEX", adVarChar, adParamInput, 6, sex)
            cmd.Parameters.Append cmd.CreateParameter("@CABLE_DISTANT", adVarChar, adParamInput, 15, jarakKabel)
            cmd.Parameters.Append cmd.CreateParameter("@SID", adVarChar, adParamInput, 50, sid)
            cmd.Parameters.Append cmd.CreateParameter("@BID", adVarChar, adParamInput, 50, bId)
            cmd.Parameters.Append cmd.CreateParameter("@FLOOR", adVarChar, adParamInput, 100, NULL)
            cmd.Parameters.Append cmd.CreateParameter("@STREET_NUMBER", adVarChar, adParamInput, 50, street_number)
            cmd.Parameters.Append cmd.CreateParameter("@PID", adVarChar, adParamInput, 50, aId)
            cmd.Parameters.Append cmd.CreateParameter("@REG_DATE", adDate, adParamInput, , getdate())
            cmd.Parameters.Append cmd.CreateParameter("@REG_STATUS", adVarChar, adParamInput, 50, "COVERED")
            cmd.Parameters.Append cmd.CreateParameter("@ORDER_STATUS", adVarChar, adParamInput, 50, "REGISTERED")
            cmd.Parameters.Append cmd.CreateParameter("@ID_TYPE", adVarChar, adParamInput, 20, idtype)
            cmd.Parameters.Append cmd.CreateParameter("@ID_NUMBER", adVarChar, adParamInput, 100, idnumber)
            cmd.Parameters.Append cmd.CreateParameter("@PROMO_CODE", adVarChar, adParamInput, 50, promoidtext)
            cmd.Parameters.Append cmd.CreateParameter("@VIRTUAL_NUMBER", adVarChar, adParamInput, 100, virtualcode)
            cmd.Parameters.Append cmd.CreateParameter("@BCA_ID", adVarChar, adParamInput, 50, NULL)
            cmd.Parameters.Append cmd.CreateParameter("@SALES_CODE", adVarChar, adParamInput, 75, salescode)
            cmd.Parameters.Append cmd.CreateParameter("@MAIN_PACKAGE", adVarChar, adParamInput, 50, PackageGroup)
            cmd.Parameters.Append cmd.CreateParameter("@MOBILE_PHONE", adVarChar, adParamInput, 35, mobilephone)
            cmd.Parameters.Append cmd.CreateParameter("@PAY_METHOD", adVarChar, adParamInput, 25, paymethod)
            cmd.Parameters.Append cmd.CreateParameter("@COORDINATE", adVarChar, adParamInput,, installationCoordinate)
            cmd.Parameters.Append cmd.CreateParameter("@TAP_ID", adVarChar, adParamInput, 50, NULL)
            cmd.Parameters.Append cmd.CreateParameter("@TAP_PORT_ID", adVarChar, adParamInput, 50, NULL)
            cmd.Parameters.Append cmd.CreateParameter("@EXPECTED_SCHEDULE", adDate, adParamInput, , expected_schedule)

            set rs = cmd.Execute
            set rs = Nothing
            set conn = Nothing

Here is the printed out query before I parameterized it: 这是我将其参数化之前的打印出的查询:

INSERT INTO [127.0.0.1].[tv].[dbo].[BH_REG](
 [REG_ID],[NAME],[PHONE],[EMAIL],[INST_ADDRESS]
,[ZIPCODE],[BIRTH_PLACE],[BIRTH],[SEX]
,[CABLE_DISTANT],[SID],[BID], [FLOOR]
, [STREET_NUMBER],[PID], [REG_DATE]
, [REG_STATUS], [ORDER_STATUS], [ID_TYPE]
, [ID_NUMBER], [PROMO_CODE], [VIRTUAL_NUMBER]
, [BCA_ID], [SALES_CODE], [MAIN_PACKAGE]
, [MOBILE_PHONE],[PAY_METHOD], [COORDINATE]
, [TAP_ID], [TAP_PORT_ID],[EXPECTED_SCHEDULE]
)VALUES(
'H-10210-00276','ALFIN TEST','0888899998888',
'me@gmail.com','BENDUNGAN HILIR 3 NO : 22'
,'10210','','07/15/1981','M','Less than 50'
,'22794','','22','',getdate(),'COVERED'
,'REGISTERED','KTP','123235243212',''
,'8993774013523344', NULL,'','packet 1'
,'0888899998888','Kartu Kredit'
, '-6.2100422217393625,106.81154161691666'
, NULL, NULL, '08/15/2015'
)

Anybody who recommends parameterized queries as easier to debug is smoking something. 建议将参数化查询更易于调试的人正在吸烟。 :) :)

This is likely to be caused by one or more of your values not matching the data type of the corresponding field, but trying to figure out which one is the problem in a long list of parameters will leave you bald. 这很可能是由于您的一个或多个值与相应字段的数据类型不匹配而引起的,但是试图找出一长串参数中的哪个是问题,将使您秃头。 Instead, open a recordset (with zero rows), do an .Addnew, and set each field one-by-one in your code. 而是,打开一个记录集(具有零行),执行一个.Addnew,然后在代码中一对一地设置每个字段。

Set rs = Server.Createobject("ADODB.Recordset")
query = "SELECT TOP 0 * FROM BH_REG"
rs.Open query, conn, 1, 2
rs.AddNew
    rs("REG_ID") = idxx
    rs("NAME") = name
    '...
    rs("EXPECTED_SCHEDULE") = expected_schedule
rs.Update
rs.Close
Set rs = Nothing

This way, ASP will tell you exactly which line is causing the trouble, you can figure out why it's the wrong datatype, fix it/prevent it, and then you can convert it all to a stored procedure or whatever. 这样,ASP会准确地告诉您引起问题的行,可以弄清楚为什么它是错误的数据类型,修复/阻止它, 然后可以将其全部转换为存储过程或其他任何形式。

Here is a shot in the dark. 这是黑暗中的一枪。 You were using a number of parameters for NULLs. 您为NULL使用了许多参数。 Those are pointless and just add confusion. 这些毫无意义,只会增加混乱。 Also there is no point in parameterizing hard coded values so remove also. 另外,对硬编码值进行参数化也没有意义,因此也请删除。 Here is what your query should look like. 这是查询的外观。

INSERT INTO BH_REG 
(
    REG_ID
    , NAME
    , PHONE
    , EMAIL
    , INST_ADDRESS
    , ZIPCODE
    , BIRTH_PLACE
    , BIRTH
    , SEX
    , CABLE_DISTANT
    , SID
    , BID
    , STREET_NUMBER
    , PID
    , REG_DATE

    , ID_TYPE
    , ID_NUMBER
    , PROMO_CODE
    , VIRTUAL_NUMBER
    , SALES_CODE
    , MAIN_PACKAGE
    , MOBILE_PHONE
    , PAY_METHOD
    , COORDINATE
    ,EXPECTED_SCHEDULE
) VALUES
(
    ? 'regid
    , ? 'name
    , ? 'phone
    , ? 'email
    , ? 'inst_address
    , ? 'zip
    , ? 'birthplace
    , ? 'birth
    , ? 'sex
    , ? 'cable_distant
    , ? 'sid
    , ? 'bid
    , ? 'street_number
    , ? 'pid
    , ? 'reg_date
    , "COVERED"
    , "REGISTERED"
    , ? 'id_type
    , ? 'id_number
    , ? 'promo_code
    , ? 'virtual_number
    , ? 'sales_code
    , ? 'main_package
    , ? 'mobile_phone
    , ? 'pay_method
    , ? 'coordinate
    , ? 'expected_schedule
)

If the types are wrong or you get conflicts it is because of how you set those parameters. 如果类型错误或出现冲突,则是由于如何设置这些参数。 I can't help you much there because it would be in the variables and getting them converted to the correct datatypes. 我在那里帮不上什么忙,因为它将放在变量中并将它们转换为正确的数据类型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 是什么导致SQL Server返回消息&#39;语句已被终止&#39;? - What causes SQL Server to return the message 'The statement has been terminated'? sql 异常:语句已终止 - sql exception : The statement has been terminated SQL-如果一次插入不正确,则SQL语句已终止 - SQL - SQL statement has been terminated if one insert into row is incorrect VB.NET SQL-字符串或二进制数据将被截断。 该语句已终止 - VB.NET SQL - String or binary data would be truncated. The statement has been terminated SQL错误:字符串或二进制数据将被截断。 该语句已终止 - SQL Error: String or binary data would be truncated. The statement has been terminated 字符串或二进制数据将被截断。 该语句已终止 - String or binary data would be truncated. The statement has been terminated 字符串或二进制数据将被截断。 该语句已终止 - String or binary data would be truncated. The statement has been terminated 字符串或二进制数据将被截断。 该语句已终止 - String or binary data would be truncated. The statement has been terminated SPlit函数错误-语句终止。 语句完成之前已用尽最大递归100 - SPlit function error - The statement terminated. The maximum recursion 100 has been exhausted before statement completion 声明终止。 最大递归 100 已用完之前语句完成错误 - The statement terminated. The maximum recursion 100 has been exhausted before statement completion error
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM