0

プログラミングの課題で、私はプロトタイプをプログラミングすることになっています。現在、私は 1 つのメソッドのみをコーディングしようとしています。このメソッドは、ロケール .csv ファイルを読み取り、外部サーバーのデータベースに BLOB (Binary Large Object) として保存することになっています。ただし、私は C# はまったく初めてで、Java には慣れています。BLOBが何であるか正確にはわかりません.バイト配列のようなものですか?

これまでのところ、私のプログラムは

  • SQL サーバーに接続します。
  • .csv ファイルを読み取ります。

データベース テーブルは tblUsers と呼ばれます。

挿入しようとしているフィールドは、データ型が varbinary(8000) の BlobFile です。

データ型が正しいかどうかさえわかりません。

私が欲しいのは、サーバー上のテーブルに保存された .csv ファイルだけです。

「文字列またはバイナリ データは切り捨てられます。ステートメントは終了しました。」残念ながら、.csv ファイルがテーブル内のデータ型と多少一致しないことがわかります。.csv にリンクする方法がわかりませんが、次のようになります。

4.012 3.012 1.312 3.321 4.232

等々。これはC#コードです

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.IO;


namespace WindowsFormsApplication8
{
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }


    private void button1_Click(object sender, EventArgs e)
    {
        string filePath = "C:/Users/Soeren/Desktop/epilepsi - semester/EpilepsiEKG/Patient1_Reciprocal_HFpower_x1.csv";
        FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read);
        string line = fs.ReadLine();
        string[] value = line.Split(',');
        BinaryReader reader = new BinaryReader(fs);


        byte[] BlobValue = reader.ReadBytes((int)fs.Length);
        fs.Close();
        reader.Close();
        //FILE READ!

        SqlConnection con = new SqlConnection(@"Data Source=webhotel10.iha.dk;Initial Catalog=F13ST2ITS2201270867;Persist Security Info=True;User ID=F13ST2ITS2201270867;Password=F13ST2ITS2201270867");
        SqlCommand com = new SqlCommand("insert into tblUsers(BlobFilename,BlobFile) values(@BlobFilename,@Blobfile)", con);
        SqlParameter BlobFileNameParam = new SqlParameter("@BlobFileName", SqlDbType.NChar);
        SqlParameter BlobFileParam = new SqlParameter("@BlobFile", SqlDbType.Binary);
        com.Parameters.Add(BlobFileNameParam);
        com.Parameters.Add(BlobFileParam);

        BlobFileNameParam.Value = filePath.Substring(filePath.LastIndexOf("/") + 1);

        BlobFileParam.Value = BlobValue;

        try
        {

            com.Connection.Open();
            com.ExecuteNonQuery();
            MessageBox.Show(BlobFileNameParam.Value.ToString() + " saved to database.", "BLOB Saved", MessageBoxButtons.OK, MessageBoxIcon.Information);

        }


        catch (Exception ex)
        {

            MessageBox.Show(ex.Message, "Save Failed", MessageBoxButtons.OK, MessageBoxIcon.Error);

        }


        finally
        {

            com.Connection.Close();

        }
    }

}

}

4

1 に答える 1

1

BlobFileParam パラメータの宣言方法は、サイズが 0 の固定長バイナリ パラメータです (サイズが指定されていないため)。指定したサイズ (0) より大きい長さのデータを挿入しようとしました。パラメータ BlobFileParam の size プロパティを正しい長さに設定してみてください。また、パラメーターの型には SqlDbType.VarBinary の方が適していると思います。

于 2013-10-28T13:13:56.833 に答える