我正在为工作中的老板做报价经理而且我遇到了一些问题。这是一个WPF C#应用程序,这是我第一次构建适用于SQL Server数据库的任何东西。我目前有三个问题。
背景:
当用户打开应用程序时,他们会看到一个DataGrid,一个新的引用按钮以及我尚未创建的其他几个控件。当他们按下新的报价按钮时,会弹出一个新窗口,其中包含一个表单,其中包含客户名称,数量等文本框。在该表单的底部是一个提交按钮,此时窗口将关闭,他们添加的信息将作为新行插入DataGrid。
问题一:
我的数据库中的一个字段叫做Open_Quote,它应该保存我们收到订单的日期。这是以编程方式处理的,也是我的第一个问题。我将在本文的底部包含所有代码,但是当用户点击提交时,我收到以下错误:“从字符串转换日期和/或时间时转换失败。”
问题二:
为了测试我的其余代码并稍后返回修复日期问题,我评论了代码并尝试再次运行我的程序。这次我得到一个不同的错误:“'newQuote.Qty'周围的语法不正确。”
问题三:
再次,为了最终测试我的其余代码而注释掉该代码,我收到了第三个错误:“字符串或二进制数据将被截断。此过程已被终止。”
我希望有一段代码导致所有这三个问题,但我可以完全离开那里。我已经把头发拉了一天多一点试图解决这个问题。无论如何,这是代码:
newQuote.xaml.cs:
private void SubmitQuotebtn_Click(object sender, RoutedEventArgs e)
{
CustomerData newQuote = new CustomerData();
int quantity;
quantity = Convert.ToInt32(Qtytxt.Text);
string theDate = System.DateTime.Today.Date.ToString("d");
newQuote.OpenQuote = theDate;
newQuote.CustomerName = CustNametxt.Text;
newQuote.OEMName = OemNametxt.Text;
newQuote.Qty = quantity;
newQuote.QuoteNumber = QuoteNumtxt.Text;
newQuote.FdNumber = FabDrawingNumtxt.Text;
newQuote.RfqNumber = RfqNumtxt.Text;
newQuote.RevNumber = RevNumtxt.Text;
try
{
string insertConString = Sqtm.Properties.Settings.Default.SqtmDbConnectionString;
using (SqlConnection insertConnection = new SqlConnection(insertConString))
{
insertConnection.Open();
SqlCommand cmd = new SqlCommand("INSERT INTO General_Info(Open_Quote, Customer_Name, OEM_Name, Qty, Quote_Num, Fab_Drawing_Num, "
+ "Rfq_Num, Rev_Num) values('newQuote.OpenQuote', 'newQuote.CustomerName', 'newQuote.OemName', 'newQuote.Qty' "
+ "'newQuote.QuoteNumber', 'newQuote.FdNumber', 'newQuote.RfqNumber', 'newQuote.RevNumber')", insertConnection);
cmd.ExecuteNonQuery();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
CustomerData.cs:
class CustomerData
{
private string _CustomerName;
private string _OEMName;
private string _OpenQuote;
private int _Qty;
private string _QuoteNumber;
private string _FdNumber;
private string _RfqNumber;
private string _RevNumber;
public CustomerData()
{
// empty constructor
}
public string CustomerName
{
get { return _CustomerName; }
set { _CustomerName = value; }
}
public string OpenQuote
{
get { return _OpenQuote; }
set { _OpenQuote = value; }
}
public string OEMName
{
get { return _OEMName; }
set { _OEMName = value; }
}
public int Qty
{
get { return _Qty; }
set { _Qty = value; }
}
public string QuoteNumber
{
get { return _QuoteNumber; }
set { _QuoteNumber = value; }
}
public string FdNumber
{
get { return _FdNumber; }
set { _FdNumber = value; }
}
public string RfqNumber
{
get { return _RfqNumber; }
set { _RfqNumber = value; }
}
public string RevNumber
{
get { return _RevNumber; }
set { _RevNumber = value; }
}
}
作为参考,以下是我在SQLServer中设置此表的方法:
Open_Quote, date, not null
Customer_Name, varchar(25), not null
OEM_Name, varchar(25), null
Qty, int, not null
Qute_Num, varchar(20), null
Fab_Drawing_Num, varchar(20), not null
Rfq_Num, varchar(10), null
Rev_Num, varchar(10), null
提前感谢任何帮助我的人,
答案 0 :(得分:0)
再试一次参数,让我们知道它是怎么回事。 http://www.dotnetperls.com/sqlparameter
编辑:或者Tieson T.说的话。这样做会更好一点。
要在数据网格中显示数据,执行插入后,可以重新绑定网格。确保更新数据源,以便重新生成刚刚插入的数据。如果遇到问题,请显示为网格设置数据源的位置和方式。
答案 1 :(得分:0)
试试这个:
SqlCommand cmd = new SqlCommand("INSERT INTO General_Info(Open_Quote, Customer_Name, OEM_Name, Qty, Quote_Num, Fab_Drawing_Num, "
+ "Rfq_Num, Rev_Num) values('" + newQuote.OpenQuote + "','" + newQuote.CustomerName + "','" + newQuote.OemName + "','" + newQuote.Qty + "','" + newQuote.QuoteNumber + "','" + newQuote.FdNumber + "', '" + newQuote.RfqNumber + "','" + newQuote.RevNumber + "' "
+ " )", insertConnection);