Axi*_*ili 3 sql insert sql-update
我一直在使用的INSERT语法是这样的
INSERT INTO TableName VALUES (...)
Run Code Online (Sandbox Code Playgroud)
我一直在使用的UPDATE语法是
UPDATE TableName SET ColumnName=Value WHERE ...
Run Code Online (Sandbox Code Playgroud)
所以在我的所有代码中,我必须生成2个字符串,这将产生类似的结果
insertStr = "(27, 'John Brown', 102)";
updateStr = "ID=27, Name='John Brown', ItemID=102";
Run Code Online (Sandbox Code Playgroud)
然后单独使用它们
"UPDATE TableName SET " + updateStr + " WHERE ID=27 " +
"IF @@ROWCOUNT=0 "+
"INSERT INTO TableName VALUES (" + insertStr + ")"
Run Code Online (Sandbox Code Playgroud)
当我使用30列的表格时,它开始困扰我.
我们不能生成只在INSERT和UPDATE上使用的一个字符串吗?
例如.在UPDATE语句上使用insertStr或在INSERT语句上使用updateStr,还是一种全新的方式?
我认为你需要一种全新的方法.您对SQL Injection持开放态度.为我们提供一些示例代码,说明如何获取数据输入并将语句发送到数据库. alt text http://goose.ycp.edu/~weddins/440/S09%20IFS440%20Bobby%20Drop%20Tables.PNG
据我所知,你所描述的内容在ANSI SQL中是不可能的,或者我所知道的任何扩展.但是,我对MySQL很熟悉,它可能完全取决于你正在使用的RDBMS.例如,MySQL具有"INSERT ... ON DUPLICATE KEY UPDATE ..."语法,类似于您在那里发布的语法,并将INSERT查询与UPDATE查询组合在一起.好处是你将两个可能的操作组合成一个查询,但是,查询的INSERT和UPDATE部分确实是不同的.
通常,这种事情可以通过应用程序中的ORM层抽象出来.就原始SQL而言,我会对任何按您描述的方式工作的语法感兴趣.