从对象类型,系统窗口表单中不存在映射

时间:2016-04-11 17:14:50

标签: c# ado.net

我尝试使用ADO.NET连接到SQL Server数据库。我尝试构建一个Windows窗体并放置一些文本框和按钮,以便我可以输入值并检查数据库中的记录。但结果表明,从对象类型System.Windows.Forms,Textbox到已知的托管提供的本机类型,不存在映射。

那么,你能给我一些建议吗?

我实现了这样的代码:

using System;
using System.Data.SqlClient;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace casestudy
{
    public partial class Form1 : Form
    {
        SqlConnection vcon1 = new SqlConnection(@"Data Source=SOPHIA-PC\SQLEXPRESS;Initial Catalog=casestudy;Integrated Security=True");

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            try
            {
            vcon1.Open();

        }

        catch (Exception ex)
        {
            MessageBox.Show("error.occured" + ex.Message);
            this.Dispose();
        }

    }
    private void Find_Click(object sender, EventArgs e)
    {
        string querystring = "SELECT * FROM AssignedSolution WHERE CASEID = @caseid";
        SqlCommand Vcom = new SqlCommand(querystring, vcon1);
        Vcom.Parameters.AddWithValue("@caseid", txtCASEID);
        SqlDataReader rdr = null;

        try
        {
            Vcom.Connection = vcon1;

            Vcom.ExecuteNonQuery();


            rdr = Vcom.ExecuteReader();
                            while (rdr.Read())
            {
                Console.WriteLine(rdr[0]);

            }
            Vcom.Dispose();

        }

        catch (Exception ex)
        {
            MessageBox.Show("error.occured" + ex.Message);

        }
           finally
           {
              vcon1.Close();
              vcon1.Dispose();
           }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

我相信你的问题就在这一行:

Vcom.Parameters.AddWithValue("@caseid", txtCASEID);

请改为尝试:

Vcom.Parameters.AddWithValue("@caseid", txtCASEID.Text);

您尝试提供TextBoxSqlParameter的值。 AddWithValue方法将参数名称及其值作为参数,但value参数的类型为object,因此您不会通过尝试分配它来获得编译器的任何投诉{ {1}}。但是,txtCASEID txtCASEID 而不是TextBox;您需要使用其string属性来获取Text值,因此string