希望能帮倒你 //这个Paths是文件路径比如说 D:/test.txt var Rbytes = File.ReadAllBytes(Paths); //把txt文件的内容读取出来给Rbytesvar db = datetable(Rbytes); foreach (var t in db ) { Info.Text = t; }
如果你是全文本的,直接使用Text类型就好。 我看到你的"*txt|*.txt|*.doc|*.docx";如果是doc文档,就有可能包含图片了, 你可以用varbinary(MAX) class Program { static void Main(string[] args) { Console.WriteLine("读取文件"); byte[] buffer; using (FileStream fs = new FileStream(@"D:\Test.docx", FileMode.Open, FileAccess.Read)) { buffer = new byte[fs.Length]; fs.Read(buffer, 0, buffer.Length); } using(SqlConnection sqlCn=new SqlConnection( "Data Source=...; Initial Catalog=...; User Id=...; Password=...")) using (SqlCommand sqlCmd = sqlCn.CreateCommand()) { Console.WriteLine("写入数据库"); sqlCmd.CommandText = "insert into Table_1(Text) values(@Text)"; sqlCmd.Parameters.Add("@Text", System.Data.SqlDbType.Binary, int.MaxValue).Value = buffer; sqlCn.Open(); sqlCmd.ExecuteNonQuery(); Console.WriteLine("从数据库查出来"); sqlCmd.CommandText = "select top 1 Text from Table_1"; object value = sqlCmd.ExecuteScalar(); buffer = (byte[])value; } Console.WriteLine("写入文件"); using (FileStream fs = new FileStream(@"D:\Test1.docx", FileMode.OpenOrCreate, FileAccess.Write)) { fs.Write(buffer, 0, buffer.Length); } Console.ReadLine(); } }
你看我的代码ofd.Title = "*txt|*.txt|*.doc|*.docx";
if (ofd.ShowDialog() == DialogResult.OK)
{
string fullpath = ofd.FileName;//文件路径
FileStream fs = new FileStream(fullpath, FileMode.Open);
//BinaryReader br = new BinaryReader(fs);
StreamReader sr = new StreamReader(fs);
string txt = sr.ReadToEnd();
//打开数据库
string server = @".\SQLEXPRESS";
string conStr = string.Format("server={0};uid={1};pwd={2};database={3}",
server, "sa", "123", "TestDB");
SqlConnection con = new SqlConnection(conStr);
try
{
con.Open();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
SqlCommand com = new SqlCommand("insert into Text values(@TextList)", con); com.Parameters.Add("TextList", SqlDbType.Text); com.Parameters["TextList"].Value = txt; com.ExecuteNonQuery(); con.Close();
}
除了image类型 还有什么类型我能用?
//这个Paths是文件路径比如说 D:/test.txt
var Rbytes = File.ReadAllBytes(Paths); //把txt文件的内容读取出来给Rbytesvar db = datetable(Rbytes);
foreach (var t in db )
{
Info.Text = t;
}
如果你是全文本的,直接使用Text类型就好。
我看到你的"*txt|*.txt|*.doc|*.docx";如果是doc文档,就有可能包含图片了,
你可以用varbinary(MAX)
class Program
{
static void Main(string[] args)
{
Console.WriteLine("读取文件");
byte[] buffer;
using (FileStream fs = new FileStream(@"D:\Test.docx", FileMode.Open, FileAccess.Read))
{
buffer = new byte[fs.Length];
fs.Read(buffer, 0, buffer.Length);
}
using(SqlConnection sqlCn=new SqlConnection(
"Data Source=...; Initial Catalog=...; User Id=...; Password=..."))
using (SqlCommand sqlCmd = sqlCn.CreateCommand())
{
Console.WriteLine("写入数据库");
sqlCmd.CommandText = "insert into Table_1(Text) values(@Text)";
sqlCmd.Parameters.Add("@Text", System.Data.SqlDbType.Binary, int.MaxValue).Value = buffer;
sqlCn.Open();
sqlCmd.ExecuteNonQuery(); Console.WriteLine("从数据库查出来");
sqlCmd.CommandText = "select top 1 Text from Table_1";
object value = sqlCmd.ExecuteScalar();
buffer = (byte[])value;
} Console.WriteLine("写入文件");
using (FileStream fs = new FileStream(@"D:\Test1.docx", FileMode.OpenOrCreate, FileAccess.Write))
{
fs.Write(buffer, 0, buffer.Length);
} Console.ReadLine();
}
}
但是text类型又不行 现在知道了 可以用arbitrary类型