我正在尝试将DB连接到我在C#.NET中制作的XO游戏现在我已经有了一张表,我正在尝试将值插入其中,并且我得到了一个错误
这是我的代码:
SqlConnection con = new SqlConnection
(@"Data Source=.SQLExpress;Initial Catalog=ExampleDB;Integrated Security=True");
con.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandType = CommandType.Text;
cmd.CommandText = "insert into XOhalloffame (PlayerName ,Winnings, Losses) values ('@name', '@win', '@lose')";
cmd.Parameters.AddWithValue("name", Session["player1"]as Player);
cmd.Parameters.AddWithValue("win",0);
cmd.Parameters.AddWithValue("win",0);
cmd.ExecuteNonQuery();
con.Close();
** player1的session
是ASP文本框,我希望玩家动态插入名称。
错误是:
No mapping exists from object type xo.Player to a known managed provider native type.
在您的INSERT
字符串中,替换以下
values ('@name', '@win', '@lose')
values (@name, @win, @lose)
在SQL查询中声明标量变量时,您不需要撇号。
还需要将@
符号放在cmd.Paramaters.AddWithValue()
呼叫中,例如:
cmd.Parameters.AddWithValue("@Name", yourValue);
cmd.Parameters.AddWithValue("@Win", yourvalue);
cmd.Parameters.AddWithValue("@Lose", yourValue);
为了解决错误,我认为当您真的只想要玩家的名字时,您正在尝试将Player
对象传递到查询中。没有看到您的Player
实现,很难说,但是您想要这样的东西。
cmd.Parameters.AddWithValue("@name", Session["player1"].Text);
错误告诉您Player
不是SQL的已知类型,因此无法将其插入带有(可能)VARCHAR键入的列中。您只需要从文本框或Player
对象的Name
属性输入实际文本。
我意识到这个答案涵盖的范围不仅仅是您的问题,但是如果您不修复语法,您可能会遇到更多错误。