ORA-01756: 引用的字符串未正确终止

Posted

技术标签:

【中文标题】ORA-01756: 引用的字符串未正确终止【英文标题】:ORA-01756: quoted string not properly terminated 【发布时间】:2011-12-14 14:43:31 【问题描述】:

我有这个错误,我大致知道它在哪里,但不知道如何纠正它。

错误信息:

“插入患者 1 值('System.Windows.Forms.TextBox, Text: 0001','M', '25-AUG-1991', 'Aaron', 'R', 'O'Neill', ' 6ft' , '11st' , '0664534334' , '0876543213' , '0001' , 'PAT', '有心脏病')"

这是我的代码:

string sql = "INSERT INTO Patients1 VALUES (" + TxtPatientId +"' ,'" + TxtGender.Text + "', '" + TxtDob.Text + "' , '" + TxtFName.Text + "' , '" +
                TxtMName.Text + "' , '" + TxtLName.Text + "' , '" + TxtHeight.Text + "' , '" + TxtWeight.Text + "' , '" + TxtHomePh.Text + 
                "' , '" + TxtMobPhone.Text + "' , '"  + TxtDocId.Text + "' , '" + TxtViewType.Text + "', '" +
                TxtPDetails.Text + "')";

我认为我的错误来自第一个输入 (PatientId)。

我的数据库表如下所示:

CREATE TABLE Patient1
   (Patient_id NUMBER(6)    NOT NULL,
    GENDER VARCHAR2(1) NOT NULL, 
    DATE_OF_BIRTH DATE,
    PATIENT_FIRST_NAME VARCHAR2(9)  NOT NULL,
    PATIENT_MIDDLE_INITIAL VARCHAR2(1),
    PATIENT_SURNAME VARCHAR2(9) NOT NULL,
    HEIGHT NUMBER(3,2),
    WEIGHT NUMBER(5,2),
    HOME_PHONE NUMBER(10)   NOT NULL,
    MOBILE_PHONE NUMBER(10) NOT NULL,
    DOCTOR_ID NUMBER(6) NOT NULL,
    VIEWTYPE VARCHAR2(3) DEFAULT 'PAT',
    OTHER_PATIENT_DETAILS VARCHAR2(50),
    CONSTRAINT patients_pk PRIMARY KEY(Patient_id));

如有任何帮助,我们将不胜感激

【问题讨论】:

【参考方案1】:

看起来您没有访问输入的.text 属性。此外,您还没有为VALUES 列表中的第一项打开单引号:

VALUES (" + TxtPatientId +"'

应该是:

VALUES ('" + TxtPatientId.text +"'

您没有在其他参数中转义单引号。 O'Neill 有一个引用,它打破了声明的其余部分。

有关使用绑定参数而不是串联字符串来构建查询的信息,请参阅@vc 74 的答案。

【讨论】:

谢谢你,我知道它在那个区域附近。盯着代码看太久会让你发疯。当它允许我时,我会接受这个答案。【参考方案2】:

您需要通过将 O'Neill 中的单引号加倍来转义它 或在查询中使用bind parameters 而不是硬编码值

【讨论】:

以上是关于ORA-01756: 引用的字符串未正确终止的主要内容,如果未能解决你的问题,请参考以下文章

引用的字符串未正确终止

Codeigniter 中的 Oracle 查询给出 ORA-01722 和 ORA-01756

转 sqlplus执行sql报错:ORA-01756:

引用在 plsql 中未正确终止

SQL 引用的字符串未正确终止错误 - Oracle

卡在 PL/SQL:ORA-00933:SQL 命令未正确结束