gpt4 book ai didi

c# - SQL Server 添加字符串值时列名无效

转载 作者:太空狗 更新时间:2023-10-29 22:10:51 25 4
gpt4 key购买 nike

我是 SQL Server 新手

我是这样创建我的表的:

CREATE TABLE Accidents (
Id INT NOT NULL PRIMARY KEY IDENTITY,
GUID VARCHAR(100),
Latitude VARCHAR(100),
Longitude VARCHAR(100),
PhotoName VARCHAR(100)
)

并且我创建了一个网络服务来向该表插入数据,如下所示:

    SqlConnection con = new SqlConnection(@"workstation id=DatabaseSample.mssql.somee.com;packet size=4096;user id=???;pwd=???;data source=DatabaseSample.mssql.somee.com;persist security info=False;initial catalog=DatabaseSample");

public string addAccidentToDatabase(string GUID, string imageBase64String, string latitude, string longitude, string photoName)
{
SqlCommand cmd = new SqlCommand("INSERT INTO Accidents (GUID,Latitude,Longitude,PhotoName) VALUES ("
+ GUID + "," + latitude + "," + longitude + "," + photoName + ")", con);

try
{
con.Open();
cmd.ExecuteNonQuery();
}
catch (Exception e)
{
return e.Message;
}
finally
{
con.Close();
}

return "succeeded";
}

所有这些东西都托管在一个免费的托管服务器上。

当我从 VS2010 测试 Web 服务时,当我将数字传递给所有参数时,新行已成功添加到表中。但是当我将至少一个字符串传递给服务时,例如“a”,我得到了这个结果:

<string xmlns="http://tempuri.org/">Invalid column name 'a'.</string>

并且该行未添加。我想知道他为什么将“a”视为列名?谁能帮忙?

最佳答案

I wonder why he considered "a" as a column name?

这不难看出。您不应该开发软件、部署它并希望它运行。你应该测试一下。将执行代码提取到类方法中,然后从您的服务中调用它。开发时,您可以从单元测试或命令行程序或任何您喜欢测试的程序中调用此方法。

您的问题:您没有在查询中的字符串(或 varchars,如果需要)两边加上引号。例如,如果您只是将查询字符串打印到控制台,您就会看到它。

但老实说,这是您遇到的最少的问题。您不应该手工编写 SQL。至少使用参数化查询。所以让你的查询是:

"INSERT INTO Accidents (GUID, Latitude, Longitude, PhotoName) 
VALUES (@GUID, @Latitude, @Longitude, @PhotoName)"

并绑定(bind)参数:

cmd.Parameters.AddWithValue("@GUID", GUID);
...

关于c# - SQL Server 添加字符串值时列名无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16502104/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com