【问题标题】:Ignore space without deleting space in a string while inserting into SQL database插入 SQL 数据库时忽略空格而不删除字符串中的空格
【发布时间】:2013-11-23 02:45:55
【问题描述】:

我正在使用 C++ 和嵌入式 SQL 将文本文件中的数据读入 SQL 数据库。 这是文本文件“employee.txt”:

1000 Smith Joe 35000.00

其中 empId=100,empName=“Smith Joe”,empSal = 35000.00。

到目前为止,我尝试过的语句不适用于employee.txt 文件中名字和姓氏之间的空格。它正在读取“Smith”和“Joe”之间的空格,表示 Smith 和 Joe 是两个独立的项目,而不是带有空格的字符串。这是我的代码:

inFile >> empId;

while (!inFile.eof())
{
    inFile >> empName;
    inFile >> empSal;

    string sql;
    sql = "insert into Employee values (\'"+ empID + "\', \' "+empName+ " \', \'"
           +empSal+ "\')";

    mysql_query(connect, sql.c_str());
    inFile >> empSal;

}

如果我从文本文件中删除空格(“SmithJoe”而不是“Smith Joe”),数据库会正确填充。

我想在读入文件时忽略空白,而不删除空白,以便将整个字符串“Smith Joe”放入数据库的一个单元格中。

有没有办法在不删除空格的情况下忽略两个名称之间的空格,以便将整个字符串“Smith Joe”读入数据库的一个单元格?

谢谢

【问题讨论】:

  • mysql跟这个有什么关系?您的问题仅在于读取文本文件,而您在读取数据后如何处理它是无关紧要的,不是吗?
  • 不幸的是,你从根本上搞砸了。如果您使用空格将名字和姓氏分开,您将无法判断是名字还是姓氏中有空格。您无法知道“A B C”是“A B”、“C”还是“A”、“B C”。因此,您无法同时获得“Dideric van der Waal”(姓氏包含空格的化学家)和“Ram gopal Qatlam”(我的名字包含空格的朋友)。您如何知道“Patrick Nielsen Hayden”是否有中间名、带空格的名字或带空格的姓氏? (剧透,他的姓有一个空格。)

标签: c++ mysql sql database


【解决方案1】:
  1. 阅读整行。 "1000 史密斯乔 35000.00"
  2. 找到第一个空格。在那个空间分裂。 "1000"、"Smith Joe 35000.00"
  3. 找到该行剩余部分的最后一个空格。在那个空间分裂。 “1000”、“史密斯乔”、“35000.00

【讨论】:

    【解决方案2】:

    您可以尝试将 empName 读入两个变量,如 empFirstName 和 empLastName,然后在插入数据库时​​连接它们。

    【讨论】:

    • 如果员工的名字是“Dideric van der Waal”,那将失败。
    • 我完全同意大卫·施瓦茨的观点。输入应该有一些分隔符,没有它,任何技术都不会永远工作。如果将来必须向输入中添加一列,即使拆分技术也会失败。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-02
    • 2014-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-22
    相关资源
    最近更新 更多