PDA

View Full Version : مشکل با قسمتی از پروژه کمک



golnar1992
دوشنبه 16 بهمن 1391, 20:03 عصر
من میخوام صدای ذخیره شده تو پایگاهمو پخش کنم اینم کدمه مشکلش کجاست خطا میده میگه مطمئنی مسیر فایلت اینجاست؟:ناراحت:

private void BUK_Click(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection();
con.ConnectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=E:\504\504\pr oject_504\project_504\504words.mdf;Integrated Security=True;User Instance=True";
SqlCommand cmd = new SqlCommand();
SqlDataReader reader;
cmd.Connection = con;
con.Open();
cmd.CommandText = "select EnglishP from T_Sound where WordID like @WordID";
cmd.Parameters.Add("@WordID", SqlDbType.Int);
cmd.Parameters["@WordID"].Value = WordID;
reader = cmd.ExecuteReader();
while (reader.Read())
{
amrp = Convert.ToString(reader["EnglishP"]);
SoundPlayer player = new SoundPlayer(amrp);


player.PlaySync();
}
con.Close();
}

}
}

ma.rad
دوشنبه 16 بهمن 1391, 20:16 عصر
چند تا سوال:
فیلد مربوط به صدا رو تو دیتابیس چی تعریف کردید؟
شما یه رشته رو داری پاس میدی برای پخش !! شما باید توسط دستور open for binary فايل را به صورت باينري باز كنيد و سپس با متدهاي append chunk و متد get chunk ميتوانيد از فيلد اطلاعات را بخوانيد و يا بنويسيد من تو تاپیک قبلی یه سایت معرفی کرم برای پخش صدای ذخیره شده تو دیتابیس
چرا شما صدا رو تو دیتابیس ذخیره می کنی؟به نظرم شما باید از آدرس دهی استفاده کنی وآدرس صوت مورد نظر تو دیتابیس ذخیره کنی ، البته اگر تعدادشون زیاده وگرنه نیاز به ذخیره نیست

ma.rad
دوشنبه 16 بهمن 1391, 20:40 عصر
بیا دوست عزیز یه نمونه تا متوجه بشید:

99558

ma.rad
دوشنبه 16 بهمن 1391, 20:42 عصر
اینم دیتابیس برنامه: Sql Server 2005

ma.rad
دوشنبه 16 بهمن 1391, 20:43 عصر
بقیه دیتابیس:

ma.rad
دوشنبه 16 بهمن 1391, 21:19 عصر
اینم یه مقدار توضیح:
شما باید فایل به باینری تبدیل وسپس در بانک ذخیره کنید

byte [] stream = File.ReadAllBytes (@ "d: \ ​​m.wma"); com.Parameters.AddWithValue ("@ voice", stream);


برای تبدیل فایل باینری ذخیره شده در بانک:

SqlCommand com = new SqlCommand ("select * from tblVoice", con); DataTable dt = new DataTable (); SqlDataReader dr = com.ExecuteReader (); dt.Load (dr);

byte [] stream = (byte []) dt.Rows [0] [0];


و در آخر پخش فابل صوتی مورد نظر:

File.WriteAllBytes ("D: \ \ news.wma", stream); axWindowsMediaPlayer1.URL = "D: \ \ news.wma";

golnar1992
دوشنبه 16 بهمن 1391, 21:26 عصر
من کد vb شو که دارم این دردسرارو نداره و پخش میکنه

Private Sub BUK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BUK.Click
Dim con As New SqlConnection
con.ConnectionString = My.Settings.WordsDBConnectionString
Dim cmd As New SqlCommand
Dim reader As SqlDataReader
cmd.Connection = con
con.Open()
cmd.CommandText = "select EnglishP from T_Sound where WordID like @WordID"
cmd.Parameters.Add("@WordID", SqlDbType.Int)
cmd.Parameters("@WordID").Value = WordID
reader = cmd.ExecuteReader
While reader.Read
My.Computer.Audio.Play(reader.Item("EnglishP"), AudioPlayMode.WaitToComplete)
End While
con.Close()
End Sub

ma.rad
دوشنبه 16 بهمن 1391, 21:37 عصر
من کد vb شو که دارم این دردسرارو نداره و پخش میکنه

Private Sub BUK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BUK.Click
Dim con As New SqlConnection
con.ConnectionString = My.Settings.WordsDBConnectionString
Dim cmd As New SqlCommand
Dim reader As SqlDataReader
cmd.Connection = con
con.Open()
cmd.CommandText = "select EnglishP from T_Sound where WordID like @WordID"
cmd.Parameters.Add("@WordID", SqlDbType.Int)
cmd.Parameters("@WordID").Value = WordID
reader = cmd.ExecuteReader
While reader.Read
My.Computer.Audio.Play(reader.Item("EnglishP"), AudioPlayMode.WaitToComplete)
End While
con.Close()
End Sub



مطمئن هستید آدرس فایل مورد نظر در دیتابیس ذخیره نشده؟

دیباگ کنید EnglishP چی بر می گردونه

gwbasic
دوشنبه 16 بهمن 1391, 21:47 عصر
لطف کنید برای تاپیک خود عنوان مناسبی انتخاب کنید. واقعا نمی دونم چطور این موضوع رو باید جا انداخت!!؟!؟!؟!