我是编程新手,希望有人能帮助我。 我想将我在C#中收到的数据存储到MySql:该表应该是可变的 根据我收到的数据。
string myInsertQuery = String.Format(“INSERT INTO volumen(date,time, bidvol,bidprice,askprice,askvol,lastprice,volume)VALUES({0}, {1},{2},{3},{4},{5},{6},{7})“,now_date_marketlast, now_time_marketlast,bidvol,bidprice,askprice,askvol,ePrice1, e.Volume);
有效,但如何定义表变量。如果我用{0}替换volumen,并且表不能正常工作。 请帮我。 提前谢谢。
答案 0 :(得分:1)
首先,你可能不想做你正在尝试的事情,因为它会打开你的SQL注入攻击代码。有一些方法,使用SqlCommand对象,动态创建不对SQL注入开放的SQL语句。
话虽如此,当你用{0}替换volumen时,除非你将表名添加到值列表的开头,否则now_date_marketlast将作为你的表名插入。写这个的正确方法是:
string myInsertQuery = String.Format("INSERT INTO {0} (date, time, bidvol, bidprice, askprice, askvol, lastprice, volume) VALUES({1}, {2}, {3}, {4}, {5}, {6}, {7}, {8})", "volumen", now_date_marketlast, now_time_marketlast, bidvol, bidprice, askprice, askvol, ePrice1, e.Volume);
您仍然需要提供表名,您只是在代码中的不同位置执行此操作。再次,由于SQL注入,这不是一个好主意。
如果您正在寻找某种方式让MySQL根据您传入的数据来确定您正在使用的表,那么您运气不好,因为数据库引擎不会以这种方式工作。
答案 1 :(得分:0)
试试这个:
var tableName = "volumen";
string myInsertQuery = String.Format("INSERT INTO {8} (date, time, bidvol, bidprice, askprice, askvol, lastprice, volume) VALUES({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7})", now_date_marketlast, now_time_marketlast, bidvol, bidprice, askprice, askvol, ePrice1, e.Volume, tableName);
答案 2 :(得分:0)
如果要分配表名。你可以这样做:
string myInsertQuery = String.Format("INSERT INTO {8} (date, time, bidvol, bidprice, askprice, askvol, lastprice, volume) VALUES({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7})", now_date_marketlast, now_time_marketlast, bidvol, bidprice, askprice, askvol, ePrice1, e.Volume, volumen);
Volumen是你的表名