【黑马程序员】SQL入门(3)

来源:互联网 发布:aofax呼叫中心软件 编辑:程序博客网 时间:2024/05/25 21:33

---------------------- Windows Phone 7手机开发、.Net培训、期待与您交流! ----------------------

  今天连接数据库的时候出现了一个错误(将截断字符串或二进制数据。语句已终止)。调试了半天发现原来是插入的值大小超过了字段的大小。




private void btnread_Click(object sender, EventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();
            ofd.Filter = "文本文件|*.txt";
            ofd.InitialDirectory = @"D:\Work Space\visual studio work folder\读取和写入文件练习\读取和写入文件练习\source";
            if (ofd.ShowDialog() != DialogResult.OK)
            {
                return;
            }
            using (FileStream fileStream = File.OpenRead(ofd.FileName))
            {
                using (StreamReader reader = new StreamReader(fileStream,System.Text.Encoding.GetEncoding("gb2312")))
                {
                    using (SqlConnection sqlconn = new SqlConnection(@"server=zcj-pc;database=MyTestDB1;integrated security=true"))
                    {
                        sqlconn.Open();
                        string line = null;
                        while ((line = reader.ReadLine()) != null)
                        {
                            string[] str = line.Split('|');
                            string name = str[1];
                            string Age = str[2];
                            string salary = str[3];
                            string commandtext = "insert into t1(FNumber,FName,FAge,FSalary) values (newid(),@name,@age,@salary)";
                            using (SqlCommand sqlcomm = new SqlCommand(commandtext, sqlconn))
                            {
                                sqlcomm.Parameters.Clear();
                                sqlcomm.Parameters.Add("@name", SqlDbType.NChar).Value = name.Trim();
                                sqlcomm.Parameters.Add("@age", SqlDbType.Int).Value = Age.Trim();
                                sqlcomm.Parameters.Add("@salary", SqlDbType.Int).Value = salary.Trim();
                                if(sqlcomm.ExecuteNonQuery()>0)
                                    MessageBox.Show("插入成功!");
                            }


                        }
                    }
                }
            }
        }

sqlcomm.Parameters.Add("@name", SqlDbType.NChar).Value = name.Trim();改成

sqlcomm.Parameters.Add("@name", SqlDbType.NChar,10).Value = name.Trim();之后,就执行成功了。

把长度设定为10的时候,自动会把超过大小的值截去。

---------------------- Windows Phone 7手机开发、.Net培训、期待与您交流! ----------------------详细请查看:http://net.itheima.com/

原创粉丝点击