我正在使用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附近的语法不正确
答案 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
(默认数据库)可能与您要使用的不同。
Booking
运行SELECT查询,以检查您是否具有所需的安全权限。MyComputerName\SqlServerInstanceName
。