【发布时间】:2014-04-29 07:09:39
【问题描述】:
我有一个问题,几天都解决不了。 我的简单代码(dll文件):
public static string RegisterUser(string table, string l, string p)
{
string query = "INSERT INTO " + table + "(login, password) VALUES ('" + l + "','" + p + "');";
return query;
}
一切正常,但是当我想写入网络上接收到的数据时,它并没有返回完整的字符串,例如
string recieveStr = Encoding.UTF8.GetString(connection.Buffer); //received text: RegUser:nipercop:passwrd
string[] strArr = recieveStr.Split(':');
if (strArr[0].Equals("RegUser"))
{
// string p = strArr[2]; //passwrd
// sendStr = SqlCommands.RegisterUser("users",strArr[1], "passwrd");//works fine
sendStr = SqlCommands.RegisterUser("users",strArr[1], strArr[2]); // doesn't work
}
这样返回消息:
INSERT INTO users(mail, password) VALUES ('nipercop','passwrd
字符串“')”的结尾丢失。没有错误,没有警告,没有任何东西。 我尝试在服务器、客户端将编码更改为 ASCII,但没有效果。
【问题讨论】:
-
strArr[2] 给你哪个值?
-
我同意@AngryTiger,您的字符串有可能包含不应该包含的内容(即可能需要
String.Trim()ing。您发布的示例RegisterUser()方法也需要3 个参数,您的示例用法仅使用 2 调用它 - 还有其他重载方法吗? -
抱歉各位,我更正了代码。
标签: c# winforms sqlite networking