我真的是编程新手,所以如果我的知识看起来真的不合适,请原谅。我正在为我的学校做一个C#项目,而且我在启动数据库时遇到了问题。
以下是一些代码:
private void buttonPurchase_Click(object sender, EventArgs e)
{
if (MessageBox.Show("Purchase?", "", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
// store invoice
System.Data.SqlClient.SqlConnection sqlConnection1 =
new System.Data.SqlClient.SqlConnection("CarDBConnectionString");
System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand();
cmd.CommandType = System.Data.CommandType.Text;
cmd.CommandText = "INSERT into invoiceTbl(invoiceId, date, time) values (1, 21/6/2014, 11:13PM)";
sqlConnection1.Open();
cmd.ExecuteNonQuery();
sqlConnection1.Close();
}
}
使用这些代码,我一直面临错误
初始化字符串的格式不符合从索引0 1和#34;开始的规范,在"类型' System.ArgumentException'之类的未处理异常。发生在System.Data.dll"
中
此处还有我的app.config
中的代码<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<connectionStrings>
<add name="CarDBConnectionString" connectionString="Data Source=(LocalDB)\v11.0;InitialCatalogue=CarDB;AttachDbFilename=|DataDirectory|\CarDB.mdf;Integrated Security=True"
providerName="System.Data.SqlClient" />
<add name="Draft_1.Properties.Settings.CarDBConnectionString"
connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\CarDB.mdf;Integrated Security=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
</configuration>
我到处尝试谷歌搜索,但我似乎无法理解任何解决方案:-(任何帮助将非常感谢,谢谢!
答案 0 :(得分:3)
"InitialCatalogue"
中错误的部分(正确的密钥为Initial Catalog
),代码中存在错误。
您需要读取连接字符串的值并将其传递给SqlConnection
的构造函数。构造函数需要一个有效的连接字符串,而不是配置文件部分的键
您可以使用
string connectionString = ConfigurationManager.ConnectionStrings
["CarDBConnectionString"].ConnectionString;
SqlConnection sqlConnection1 = new SqlConnection(connectionString);
答案 1 :(得分:2)
@Steve说得好:你必须传递一个有效的连接字符串。
其次,尝试附上参数&#39;单引号中的值如下:
"INSERT into invoiceTbl(invoiceId, date, time) values (1, '21/6/2014', '11:13PM')"
更好的做法是使用包含两条信息的单个日期时间(或命名为 TimeStamp )数据库字段(通常它对应于DateTime.Now
)。修改后的查询应如下所示:
"INSERT into invoiceTbl(invoiceId, datetime) values (1, '21/6/2014 11:13PM')"
希望这会有所帮助。 RGDS,
答案 2 :(得分:0)
如果您在服务器下使用“连接”并且您拥有(数据集).xsd文件,也会发生此错误。在这种情况下,.xsd内的连接字符串会受到干扰,您会收到此错误。在我的情况下,我在我的xsd文件中删除了表,并使用新的连接字符串再次创建了相同的表,并且工作正常。
这种方法仅适用于小型项目。但至少你会有一个想法,错误来自哪里。