【问题标题】:inertion of date time combobox value into database将日期时间组合框值插入数据库
【发布时间】:2014-08-27 22:56:42
【问题描述】:
 string c = "";
        string s = "";
        string d = "";
        string t = "";
        if (CarNameCombo.SelectedIndex >= 0 && SourceCombo.SelectedIndex >= 0 && DestinationCombo.SelectedIndex >= 0 && NumberOfPassengers.SelectedIndex >= 0)
        c = CarNameCombo.Items[CarNameCombo.SelectedIndex].ToString();
        s = SourceCombo.Items[SourceCombo.SelectedIndex].ToString();
        d = SourceCombo.Items[DestinationCombo.SelectedIndex].ToString();
        t = NumberOfPassengers.Items[NumberOfPassengers.SelectedIndex].ToString();
        MessageBox.Show(""+c+s+d+t);
        string date = dateTimePicker1.Text;
        string date1 = dateTimePicker2.Text;
        string x = richTextBox1.Text;
        string y = richTextBox2.Text;
        MessageBox.Show("" +date +date1);
        SqlConnection conn = new SqlConnection("Data Source=PRAVEEN\\SQLEXPRESS;Initial Catalog=travelbooking;Integrated Security=True");
        SqlCommand cmd = new SqlCommand("insert into BookDetails(CarName,Source,Destination,Date,FromAddress,ToAddress,Time,Numberpassengers)VALUES('" + c + "','" + s + "','" + d + "','" + date + "','" + x + "','" + y + "' '"+ date1 + "','" + t + "'", conn)");
        cmd.CommandType = CommandType.Text;
        cmd.Connection = conn;
        //cmd.Parameters.AddWithValue("@CarName", c);
        //cmd.Parameters.AddWithValue("@Source", s);
        //cmd.Parameters.AddWithValue("@Destination", d);
        //cmd.Parameters.AddWithValue("@Date", date);
        //cmd.Parameters.AddWithValue("@FromAddress", richTextBox1.Text);
        //cmd.Parameters.AddWithValue("@ToAddress", richTextBox2.Text);
        //cmd.Parameters.AddWithValue("@Time", date1);
        //cmd.Parameters.AddWithValue("@Numberpassengers", t);
        conn.Open();
        cmd.ExecuteNonQuery();
        conn.Close();
    }

我正在使用 c# 和 ado 在 Windows 窗体项目中工作。我得到并抛出异常说无法将日期和/或时间从字符转换为字符串,我将数据库中的数据类型指定为时间(7)并将日期指定为日期......我需要做一些额外的事情吗?这是消息“从字符串转换日期和/或时间时转换失败”标签sql异常未处理。

【问题讨论】:

  • 您应该发布您收到的整个错误消息。还要将您正在使用的平台添加到标签列表中,否则有知识帮助您的人不会看到问题。

标签: c# datetime exception ado.net insertion


【解决方案1】:

使用DateTimePicker.Value 代替DateTimePicker.Text 并创建一个接受此DateTime 值而不是文本字符串的参数化查询,例如:

    DateTime date = dateTimePicker1.Value;
    DateTime date1 = dateTimePicker2.Value;
    ...
    SqlCommand cmd = new SqlCommand(
 "insert into BookDetails(CarName,Source,Destination,Date,FromAddress,ToAddress,Time,Numberpassengers) " +
" VALUES(@CarName,@Source,@Destination,@Date,@FromAddress,@ToAddress, " +
       " @Time,@NumPassengers)", conn)");
    cmd.CommandType = CommandType.Text;
    cmd.Connection = conn;
    cmd.Parameters.AddWithValue("@CarName", c);
    cmd.Parameters.AddWithValue("@Source", s);
    cmd.Parameters.AddWithValue("@Destination", d);
    cmd.Parameters.AddWithValue("@Date", date);
    cmd.Parameters.AddWithValue("@FromAddress", richTextBox1.Text);
    cmd.Parameters.AddWithValue("@ToAddress", richTextBox2.Text);
    cmd.Parameters.AddWithValue("@Time", date1);
    cmd.Parameters.AddWithValue("@Numberpassengers", t);

原始代码失败,因为您传递了一个任意格式的日期,而不是实际的日期值。 SQL Server 尝试使用与最终用户的区域设置不匹配的列排序规则来解释此字符串。

【讨论】:

    【解决方案2】:

    找到这个

    namespace First_Csharp_app
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
            String gender; //we have to define this
            private void button1_Click(object sender, EventArgs e)
            {
                SqlConnection con = new SqlConnection(str);
                String str = "server=MUNESH-PC;database=windowapp;UID=sa;password=123";
                String query = "insert into data (E.id,name,surname,age,gender,DOB) values ('"+this.eid_txt.text+"','"+this.nametxt.text+"','"+this.surname_txt.text+"','"+this.age_txt.text+"' , '"+this.gender+"' , '"+this.DateTimePicker1.Text+"')";
                SqlCommand cmd = new sqComamnd(query,con);
                SqlDataReader dbr;
                try
                {
                    con.open();
                    dbr = cmd.ExecuteReader();
                    MessageBox.Show("saved");
                    while(dbr.read())
                    {
                    }
                }
                catch (Exception es)
                {
                    MessageBox.Show(es.Message);
                }
            }
            private void rediobutton1.checked(object sender, EventArgs e)
            {
                gender = "male";
            }
            private void rediobutton1.checked(object sender, EventArgs e)
            {
                gender = "female";
            }
        }
    }   
    

    【讨论】:

      猜你喜欢
      • 2019-10-06
      • 2016-11-16
      • 2014-09-20
      • 2010-12-28
      • 1970-01-01
      • 2012-05-01
      相关资源
      最近更新 更多