我正在尝试将数据库连接到我用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.
答案 0 :(得分:2)
在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类型的列中。您只需输入文本框中的实际文本或Name
对象的Player
属性。
我意识到这个答案不仅仅包含您的问题,但如果您不修复语法,则可能会遇到更多错误。