2012-03-06 73 views
1

这是我做了什么:将数据插入到SQL Server 2008中的表在C#中的形式

protected void btnsave_Click(object sender, EventArgs e) 
{ 
    SqlConnection con = new SqlConnection("Data Source=user-ade4de77d3;Initial Catalog=test;Persist Security Info=True;uid=sa;pwd=sql2008"); 
    SqlCommand cmd = new SqlCommand(); 
    cmd.Connection = con; 
    con.Open(); 
    cmd.CommandText = ("INSERT into person VALUES (@empid,@name,@sex,@mstatus,@empstat,@dob,@doh,@dor,@dot)"); 
    cmd.Parameters.AddWithValue("@empid", txtid.Text); 
    cmd.Parameters.AddWithValue("@name", txtnam); 
    cmd.Parameters.AddWithValue("@sex", dpsex.SelectedValue); 
    cmd.Parameters.AddWithValue("@mstatus", dpmstat.SelectedValue); 
    cmd.Parameters.AddWithValue("@empstat", dpstatus.SelectedValue); 
    cmd.Parameters.AddWithValue("@dob", txtdob.Text); 
    cmd.Parameters.AddWithValue("@doh", txtdoh.Text); 
    cmd.Parameters.AddWithValue("@dor", txtdor.Text); 
    cmd.Parameters.AddWithValue("@dot", txtdot.Text); 
    cmd.ExecuteNonQuery(); 
    con.Close(); 
} 

我得到这样的错误:

没有对应的对象存在键入System.Web.UI.WebControls.TextBox到一个已知的托管提供程序本机类型。

如何清除这个错误?

+0

我当然希望你**不是真的' sa'用户在您的生产代码! – 2012-03-06 11:28:00

+1

错误消息非常明显... – 2012-03-06 11:31:05

回答

1

您需要更改以下行:

cmd.Parameters.AddWithValue("@name", txtnam.Text); 

为您的版本缺少.Text结束。

0

你行

cmd.Parameters.AddWithValue("@name", txtnam); 

应该

cmd.Parameters.AddWithValue("@name", txtnam.text); 
0

我相信问题是这一行:

cmd.Parameters.AddWithValue("@name", txtnam); 

你试图设置参数的值文本框本身 - 不是它的.Text属性!

使用这个代替:

cmd.Parameters.AddWithValue("@name", txtnam.Text); 
0

你可能需要txtnam.Text

cmd.Parameters.AddWithValue("@name", txtnam.Text); 
0

错误很简单。您忘记获取txtnam的文本属性,因此您传递的是整个文本框对象而不是其值。

txtnam.text 
0

你已经忘记了这行添加.Text

cmd.Parameters.AddWithValue("@name", txtnam); 

将其更改为:**使用

cmd.Parameters.AddWithValue("@name", txtnam.Text); 
相关问题