数据库表未被Web服务看到

时间:2013-12-04 11:53:40

标签: asp.net sql-server web-services

我正在使用asmx网络服务将网站上的用户输入的数据输入到我的数据库Booking上的表格。

我确保该表存在于我正在使用的模式中,并且我已经测试了我的连接字符串,并且它工作正常。但是,每次我运行服务时,似乎无法看到有问题的表格,浏览器会给出此错误:

  

System.Data.SqlClient.SqlException:无效的对象名称'Booking'。

调试后说问题就在第31行

  

第31行:ws.addBooking(名称,电子邮件,餐馆,add1,add2,   add3,county,tel,info);

这是与该行相关的整个代码:

protected void Button1_Click(object sender, EventArgs e)
    {

        //Get info
        String name = TextBox1.Text.ToString();
        String email = TextBox2.Text.ToString();
        String restaurant = TextBox3.Text.ToString();
        String add1 = TextBox4.Text.ToString();
        String add2 = TextBox5.Text.ToString();
        String add3 = TextBox6.Text.ToString();
        String tel = TextBox7.Text.ToString();
        String county = DropDownList1.Text.ToString();
        String info = TextArea1.Text.ToString();

        //Call web service
        Customers ws = new Customers();
        //Pass in parameters
        ws.addBooking(name, email, restaurant, add1, add2, add3, county, tel, info);
    }

这是正在调用的webmethod addBooking

public void addBooking(String n, String e, String r, String a1, String a2, String a3, String c, String t, String i)
    {
        string sql = "INSERT INTO Booking VALUES(@n, @e, @r, @t, @c, @i, @a1, @a2, @a3)";
        using (var conn = new SqlConnection("Data Source=localhost\\SQLEXPRESS;AttachDbFilename=C:\\Users\\n00093500\\Desktop\\MMCA2\\APP_DATA\\NORTHWIND.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"))
        using (var cmd = new SqlCommand(sql, conn))
        {
            cmd.Parameters.Add("@n", SqlDbType.VarChar, 50).Value = n;//name
            cmd.Parameters.Add("@e", SqlDbType.VarChar, 50).Value = e;//email
            cmd.Parameters.Add("@r", SqlDbType.VarChar, 50).Value = r;//restaurant
            cmd.Parameters.Add("@t", SqlDbType.VarChar, 50).Value = t;//telephone
            cmd.Parameters.Add("@c", SqlDbType.VarChar, 50).Value = c;//county
            cmd.Parameters.Add("@i", SqlDbType.VarChar, 1000).Value = i;//info
            cmd.Parameters.Add("@a1", SqlDbType.VarChar, 50).Value = a1;//address
            cmd.Parameters.Add("@a2", SqlDbType.VarChar, 50).Value = a2;//address
            cmd.Parameters.Add("@a3", SqlDbType.VarChar, 50).Value = a3;//address
            conn.Open();
            cmd.ExecuteNonQuery();
        }
    }

任何人都可以帮我解读可能导致此问题的原因吗?

尝试在Visual Studio 2010中使用server explorer运行此查询...

INSERT INTO Booking(name, email, restaurant, telephone, county, info, add1, add2, add3)
VALUES(John Doe,johndoe@hotmail.com,Johns Restaurant, 1234567,Dublin,Test info,4,Main street,Kinsale)

获取此错误

Doe附近的语法不正确

2 个答案:

答案 0 :(得分:1)

尝试在插入语句中编写dbo.Booking而不是Booking

string sql = "INSERT INTO dbo.Booking VALUES(@n, @e, @r, @t, @c, @i, @a1, @a2, @a3)";

答案 1 :(得分:1)

确保在正确的数据库中运行INSERT语句。 可能是Initial Catalog(默认数据库)可能与您要使用的不同。

  1. 检查连接字符串以查看哪个数据库是默认数据库。
  2. 使用 SQL Server Management Studio 连接到数据库,并对Booking运行SELECT查询,以检查您是否具有所需的安全权限。
  3. 运行 SQL事件探查器以查看到底发生了什么。这将有助于您进一步调试。
  4. 如果您在同一台计算机上运行多个数据库引擎,请确定您已连接到正确的实例 MyComputerName\SqlServerInstanceName